apache-airflow-providers-edge3 1.6.0rc2__tar.gz → 2.0.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.
Files changed (166) hide show
  1. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/.pre-commit-config.yaml +2 -2
  2. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/PKG-INFO +13 -13
  3. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/README.rst +8 -8
  4. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/architecture.rst +2 -2
  5. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/changelog.rst +26 -0
  6. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/deployment.rst +2 -2
  7. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/index.rst +9 -9
  8. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/ui_plugin.rst +3 -3
  9. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/provider.yaml +2 -1
  10. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/pyproject.toml +5 -5
  11. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/__init__.py +3 -3
  12. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/api_client.py +12 -23
  13. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/worker.py +1 -27
  14. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/integration_test.py +1 -1
  15. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/win_test.py +5 -2
  16. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/executors/edge_executor.py +7 -63
  17. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_worker.py +1 -3
  18. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/edge_executor_plugin.py +118 -0
  19. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/package.json +1 -1
  20. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/version_compat.py +0 -2
  21. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/auth.py +11 -35
  22. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/datamodels.py +3 -2
  23. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/health.py +1 -1
  24. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/jobs.py +10 -11
  25. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/logs.py +5 -8
  26. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/worker.py +5 -12
  27. {apache_airflow_providers_edge3-1.6.0rc2/src/airflow/providers/edge3/openapi → apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/worker_api}/v2-edge-generated.yaml +1 -2
  28. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_worker.py +22 -46
  29. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/executors/test_edge_executor.py +3 -175
  30. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/plugins/test_edge_executor_plugin.py +5 -43
  31. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_jobs.py +2 -1
  32. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_worker.py +1 -1
  33. apache_airflow_providers_edge3-2.0.0rc1/www-hash.txt +1 -0
  34. apache_airflow_providers_edge3-1.6.0rc2/src/airflow/providers/edge3/openapi/__init__.py +0 -19
  35. apache_airflow_providers_edge3-1.6.0rc2/src/airflow/providers/edge3/openapi/edge_worker_api_v1.yaml +0 -808
  36. apache_airflow_providers_edge3-1.6.0rc2/src/airflow/providers/edge3/plugins/edge_executor_plugin.py +0 -297
  37. apache_airflow_providers_edge3-1.6.0rc2/src/airflow/providers/edge3/worker_api/routes/_v2_compat.py +0 -144
  38. apache_airflow_providers_edge3-1.6.0rc2/src/airflow/providers/edge3/worker_api/routes/_v2_routes.py +0 -237
  39. apache_airflow_providers_edge3-1.6.0rc2/www-hash.txt +0 -1
  40. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/LICENSE +0 -0
  41. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/NOTICE +0 -0
  42. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/cli-ref.rst +0 -0
  43. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/commits.rst +0 -0
  44. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/conf.py +0 -0
  45. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/configurations-ref.rst +0 -0
  46. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/edge_executor.rst +0 -0
  47. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/distributed_architecture.svg +0 -0
  48. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/edge_package.svg +0 -0
  49. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/worker_hosts.png +0 -0
  50. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/install_on_windows.rst +0 -0
  51. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  52. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/security.rst +0 -0
  53. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/docs/why_edge.rst +0 -0
  54. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/__init__.py +0 -0
  55. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/__init__.py +0 -0
  56. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/__init__.py +0 -0
  57. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/dataclasses.py +0 -0
  58. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/edge_command.py +0 -0
  59. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/signalling.py +0 -0
  60. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/__init__.py +0 -0
  61. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/win_notepad.py +0 -0
  62. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/executors/__init__.py +0 -0
  63. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/get_provider_info.py +0 -0
  64. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/__init__.py +0 -0
  65. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_job.py +0 -0
  66. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_logs.py +0 -0
  67. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/__init__.py +0 -0
  68. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/templates/edge_worker_hosts.html +0 -0
  69. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/templates/edge_worker_jobs.html +0 -0
  70. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.gitignore +0 -0
  71. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.prettierignore +0 -0
  72. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.prettierrc +0 -0
  73. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/README.md +0 -0
  74. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/dist/main.d.ts +0 -0
  75. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/dist/main.umd.cjs +0 -0
  76. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/eslint.config.js +0 -0
  77. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/index.html +0 -0
  78. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/common.ts +0 -0
  79. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/ensureQueryData.ts +0 -0
  80. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/index.ts +0 -0
  81. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/infiniteQueries.ts +0 -0
  82. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/prefetch.ts +0 -0
  83. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/queries.ts +0 -0
  84. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/suspense.ts +0 -0
  85. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiError.ts +0 -0
  86. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiRequestOptions.ts +0 -0
  87. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiResult.ts +0 -0
  88. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/CancelablePromise.ts +0 -0
  89. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/OpenAPI.ts +0 -0
  90. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/request.ts +0 -0
  91. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/index.ts +0 -0
  92. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/schemas.gen.ts +0 -0
  93. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/services.gen.ts +0 -0
  94. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/types.gen.ts +0 -0
  95. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/pnpm-lock.yaml +0 -0
  96. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/AddQueueButton.tsx +0 -0
  97. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ErrorAlert.tsx +0 -0
  98. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceEditCommentButton.tsx +0 -0
  99. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceEnterButton.tsx +0 -0
  100. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceExitButton.tsx +0 -0
  101. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/RemoveQueueButton.tsx +0 -0
  102. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/SearchBar.tsx +0 -0
  103. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/StateBadge.tsx +0 -0
  104. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/StateIcon.tsx +0 -0
  105. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerDeleteButton.tsx +0 -0
  106. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerOperations.tsx +0 -0
  107. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerShutdownButton.tsx +0 -0
  108. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerStateBadge.tsx +0 -0
  109. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerStateIcon.tsx +0 -0
  110. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Alert.tsx +0 -0
  111. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/CloseButton.tsx +0 -0
  112. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/InputGroup.tsx +0 -0
  113. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/ScrollToAnchor.tsx +0 -0
  114. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Content.tsx +0 -0
  115. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Item.tsx +0 -0
  116. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Root.tsx +0 -0
  117. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Trigger.tsx +0 -0
  118. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/ValueText.tsx +0 -0
  119. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/index.ts +0 -0
  120. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/createToaster.ts +0 -0
  121. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/index.ts +0 -0
  122. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/constants.ts +0 -0
  123. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/ColorModeProvider.tsx +0 -0
  124. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/index.ts +0 -0
  125. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/useColorMode.tsx +0 -0
  126. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/dev.tsx +0 -0
  127. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/layouts/EdgeLayout.tsx +0 -0
  128. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx +0 -0
  129. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/main.tsx +0 -0
  130. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx +0 -0
  131. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +0 -0
  132. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/README.md +0 -0
  133. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/cloud-computer-dark.svg +0 -0
  134. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/cloud-computer.svg +0 -0
  135. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/theme.ts +0 -0
  136. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/config.ts +0 -0
  137. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/index.ts +0 -0
  138. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/useContainerWidth.ts +0 -0
  139. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/vite-env.d.ts +0 -0
  140. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/testsSetup.ts +0 -0
  141. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.app.json +0 -0
  142. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.json +0 -0
  143. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.lib.json +0 -0
  144. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.node.json +0 -0
  145. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/vite.config.ts +0 -0
  146. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/__init__.py +0 -0
  147. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/app.py +0 -0
  148. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/datamodels_ui.py +0 -0
  149. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/__init__.py +0 -0
  150. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/ui.py +0 -0
  151. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/conftest.py +0 -0
  152. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/__init__.py +0 -0
  153. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/__init__.py +0 -0
  154. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/__init__.py +0 -0
  155. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_api_client.py +0 -0
  156. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_dataclasses.py +0 -0
  157. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_edge_command.py +0 -0
  158. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_signalling.py +0 -0
  159. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/executors/__init__.py +0 -0
  160. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/models/__init__.py +0 -0
  161. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/plugins/__init__.py +0 -0
  162. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/__init__.py +0 -0
  163. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/__init__.py +0 -0
  164. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_health.py +0 -0
  165. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_logs.py +0 -0
  166. {apache_airflow_providers_edge3-1.6.0rc2 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_ui.py +0 -0
@@ -16,7 +16,7 @@
16
16
  # under the License.
17
17
  ---
18
18
  default_stages: [pre-commit, pre-push]
19
- minimum_prek_version: '0.0.28'
19
+ minimum_prek_version: '0.2.0'
20
20
  default_language_version:
21
21
  python: python3
22
22
  node: 22.19.0
@@ -37,7 +37,7 @@ repos:
37
37
  files: |
38
38
  (?x)
39
39
  ^src/airflow/providers/edge3/plugins/www/.*\.(js|ts|tsx|yaml|css|json)$|
40
- ^src/airflow/providers/edge3/openapi/v2-edge-generated.yaml$
40
+ ^src/airflow/providers/edge3/worker_api/v2-edge-generated.yaml$
41
41
  exclude: |
42
42
  (?x)
43
43
  ^src/airflow/providers/edge3/plugins/www/node-modules/.*|
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-edge3
3
- Version: 1.6.0rc2
3
+ Version: 2.0.0rc1
4
4
  Summary: Provider package apache-airflow-providers-edge3 for Apache Airflow
5
5
  Keywords: airflow-provider,edge3,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -22,13 +22,13 @@ Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Topic :: System :: Monitoring
23
23
  License-File: LICENSE
24
24
  License-File: NOTICE
25
- Requires-Dist: apache-airflow>=2.11.0,!=3.1.0
26
- Requires-Dist: apache-airflow-providers-common-compat>=1.10.0rc1
25
+ Requires-Dist: apache-airflow>=3.0.0,!=3.1.0
26
+ Requires-Dist: apache-airflow-providers-common-compat>=1.10.1rc1
27
27
  Requires-Dist: pydantic>=2.11.0
28
28
  Requires-Dist: retryhttp>=1.2.0,!=1.3.0
29
29
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
30
- Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/1.6.0/changelog.html
31
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/1.6.0
30
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html
31
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0
32
32
  Project-URL: Mastodon, https://fosstodon.org/@airflow
33
33
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
34
34
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -59,7 +59,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
59
59
 
60
60
  Package ``apache-airflow-providers-edge3``
61
61
 
62
- Release: ``1.6.0``
62
+ Release: ``2.0.0``
63
63
 
64
64
 
65
65
  Handle edge workers on remote sites via HTTP(s) connection and orchestrates work over distributed sites.
@@ -84,7 +84,7 @@ This is a provider package for ``edge3`` provider. All classes for this provider
84
84
  are in ``airflow.providers.edge3`` python package.
85
85
 
86
86
  You can find package information and changelog for the provider
87
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.6.0/>`_.
87
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/>`_.
88
88
 
89
89
  Installation
90
90
  ------------
@@ -98,14 +98,14 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
98
98
  Requirements
99
99
  ------------
100
100
 
101
- ========================================== ====================
101
+ ========================================== ===================
102
102
  PIP package Version required
103
- ========================================== ====================
104
- ``apache-airflow`` ``>=2.11.0,!=3.1.0``
105
- ``apache-airflow-providers-common-compat`` ``>=1.10.0``
103
+ ========================================== ===================
104
+ ``apache-airflow`` ``>=3.0.0,!=3.1.0``
105
+ ``apache-airflow-providers-common-compat`` ``>=1.10.1``
106
106
  ``pydantic`` ``>=2.11.0``
107
107
  ``retryhttp`` ``>=1.2.0,!=1.3.0``
108
- ========================================== ====================
108
+ ========================================== ===================
109
109
 
110
110
  Cross provider package dependencies
111
111
  -----------------------------------
@@ -127,5 +127,5 @@ Dependent package
127
127
  ================================================================================================================== =================
128
128
 
129
129
  The changelog for the provider package can be found in the
130
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.6.0/changelog.html>`_.
130
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html>`_.
131
131
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-edge3``
25
25
 
26
- Release: ``1.6.0``
26
+ Release: ``2.0.0``
27
27
 
28
28
 
29
29
  Handle edge workers on remote sites via HTTP(s) connection and orchestrates work over distributed sites.
@@ -48,7 +48,7 @@ This is a provider package for ``edge3`` provider. All classes for this provider
48
48
  are in ``airflow.providers.edge3`` python package.
49
49
 
50
50
  You can find package information and changelog for the provider
51
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.6.0/>`_.
51
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/>`_.
52
52
 
53
53
  Installation
54
54
  ------------
@@ -62,14 +62,14 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
62
62
  Requirements
63
63
  ------------
64
64
 
65
- ========================================== ====================
65
+ ========================================== ===================
66
66
  PIP package Version required
67
- ========================================== ====================
68
- ``apache-airflow`` ``>=2.11.0,!=3.1.0``
69
- ``apache-airflow-providers-common-compat`` ``>=1.10.0``
67
+ ========================================== ===================
68
+ ``apache-airflow`` ``>=3.0.0,!=3.1.0``
69
+ ``apache-airflow-providers-common-compat`` ``>=1.10.1``
70
70
  ``pydantic`` ``>=2.11.0``
71
71
  ``retryhttp`` ``>=1.2.0,!=1.3.0``
72
- ========================================== ====================
72
+ ========================================== ===================
73
73
 
74
74
  Cross provider package dependencies
75
75
  -----------------------------------
@@ -91,4 +91,4 @@ Dependent package
91
91
  ================================================================================================================== =================
92
92
 
93
93
  The changelog for the provider package can be found in the
94
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.6.0/changelog.html>`_.
94
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html>`_.
@@ -63,7 +63,7 @@ deployed outside of the central Airflow cluster is connected via HTTP(s) to the
63
63
  * **Workers** (Central) - Execute the assigned tasks - most standard setup has local or centralized workers, e.g. via Celery
64
64
  * **Edge Workers** - Special workers which pull tasks via HTTP(s) as provided as feature via this provider package
65
65
  * **Scheduler** - Responsible for adding the necessary tasks to the queue. The EdgeExecutor is running as a module inside the scheduler.
66
- * **API server** (webserver in Airflow 2.x) - HTTP REST API Server provides access to Dag/task status information. The required end-points are
66
+ * **API server** - HTTP REST API Server provides access to Dag/task status information. The required end-points are
67
67
  provided by the Edge provider plugin. The Edge Worker uses this API to pull tasks and send back the results.
68
68
  * **Database** - Contains information about the status of tasks, Dags, Variables, connections, etc.
69
69
 
@@ -77,7 +77,7 @@ In detail the parts of the Edge provider are deployed as follows:
77
77
  need to set the ``executor`` configuration option in the ``airflow.cfg`` file to
78
78
  ``airflow.providers.edge3.executors.EdgeExecutor``. For more details see :doc:`edge_executor`. Note that also
79
79
  multiple executors can be used in parallel together with the EdgeExecutor.
80
- * **API server** (webserver in Airflow 2.x) - The API server is providing REST endpoints to the web UI as well
80
+ * **API server** - The API server is providing REST endpoints to the web UI as well
81
81
  as serves static files. The Edge provider adds a plugin that provides additional REST API for the Edge Worker
82
82
  as well as UI elements to manage workers (not available in Airflow 3.0).
83
83
  The API server is responsible for handling requests from the Edge Worker and sending back the results. To
@@ -27,6 +27,32 @@
27
27
  Changelog
28
28
  ---------
29
29
 
30
+ 2.0.0
31
+ .....
32
+
33
+ .. warning::
34
+ This release of the Edge3 provider drops support for Airflow versions below 3.0.0.
35
+
36
+ The support for Airflow 2.10-2.11 was experimental and GA for the provider is only for Airflow 3.0+.
37
+ Productive operation was not intended in Airflow 2.x, therefore the support for Airflow 2.x is now dropped
38
+ earlier than the usual release support policy would indicate.
39
+
40
+
41
+ Breaking Changes
42
+ ~~~~~~~~~~~~~~~~
43
+
44
+ * ``Drop Airflow 2 Support in Edge Provider (#59143)``
45
+
46
+ Misc
47
+ ~~~~
48
+
49
+ * ``Add backcompat for exceptions in providers (#58727)``
50
+ * ``Move the traces and metrics code under a common observability package (#56187)``
51
+ * ``Bump minimum prek version to 0.2.0 (#58952)``
52
+
53
+ .. Below changes are excluded from the changelog. Move them to
54
+ appropriate section above if needed. Do not delete the lines(!):
55
+
30
56
  1.6.0
31
57
  .....
32
58
 
@@ -113,7 +113,7 @@ process as and wait until all running tasks are completed. Also in a console you
113
113
  If you want to monitor the remote activity and worker, use the UI plugin which
114
114
  is included in the provider package and install it on the api-server / webserver and use the
115
115
  "Admin" - "Edge Worker Hosts" and "Edge Worker Jobs" pages.
116
- (Note: The plugin is not available on Airflow 3.0 UI, it is only in 2.x and 3.1++)
116
+ (Note: The plugin is not available on Airflow 3.0 UI, it is only in 3.1++)
117
117
 
118
118
  If you want to check status of the worker via CLI you can use the command
119
119
 
@@ -150,7 +150,7 @@ Worker status can be checked via the web UI in the "Admin" - "Edge Worker" page.
150
150
 
151
151
  .. note::
152
152
 
153
- Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow 2.10 and in 3.1 and newer.
153
+ Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow 3.1 and newer.
154
154
  Alternatively you can use the CLI commands as described in :ref:`deployment:maintenance-mgmt-cli`.
155
155
 
156
156
 
@@ -90,7 +90,7 @@ Additional REST API endpoints are provided to distribute tasks and manage the ed
90
90
  are provided by the API server.
91
91
 
92
92
 
93
- Release: 1.6.0
93
+ Release: 2.0.0
94
94
 
95
95
  Provider package
96
96
  ----------------
@@ -108,16 +108,16 @@ For the minimum Airflow version supported, see ``Requirements`` below.
108
108
  Requirements
109
109
  ------------
110
110
 
111
- The minimum Apache Airflow version supported by this provider distribution is ``2.11.0``.
111
+ The minimum Apache Airflow version supported by this provider distribution is ``3.0.0``.
112
112
 
113
- ========================================== ====================
113
+ ========================================== ===================
114
114
  PIP package Version required
115
- ========================================== ====================
116
- ``apache-airflow`` ``>=2.11.0,!=3.1.0``
117
- ``apache-airflow-providers-common-compat`` ``>=1.10.0``
115
+ ========================================== ===================
116
+ ``apache-airflow`` ``>=3.0.0,!=3.1.0``
117
+ ``apache-airflow-providers-common-compat`` ``>=1.10.1``
118
118
  ``pydantic`` ``>=2.11.0``
119
119
  ``retryhttp`` ``>=1.2.0,!=1.3.0``
120
- ========================================== ====================
120
+ ========================================== ===================
121
121
 
122
122
  Cross provider package dependencies
123
123
  -----------------------------------
@@ -144,5 +144,5 @@ Downloading official packages
144
144
  You can download officially released packages and verify their checksums and signatures from the
145
145
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
146
146
 
147
- * `The apache-airflow-providers-edge3 1.6.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.6.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.6.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.6.0.tar.gz.sha512>`__)
148
- * `The apache-airflow-providers-edge3 1.6.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.6.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.6.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.6.0-py3-none-any.whl.sha512>`__)
147
+ * `The apache-airflow-providers-edge3 2.0.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0.tar.gz.sha512>`__)
148
+ * `The apache-airflow-providers-edge3 2.0.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0-py3-none-any.whl.sha512>`__)
@@ -22,7 +22,7 @@ The Edge provider uses a Plugin to
22
22
 
23
23
  - Extend the REST API endpoints for connecting workers to the Airflow cluster
24
24
  - Provide a web UI for managing the workers and monitoring their status and tasks
25
- (Note: Airflow 3.0 does not have support for UI plugins. The UI plugin is only available in Airflow 2.x and in 3.1 and newer.)
25
+ (Note: Airflow 3.0 does not have support for UI plugins. The UI plugin is only available in Airflow 3.1 and newer.)
26
26
 
27
27
  REST API endpoints
28
28
  ------------------
@@ -35,14 +35,14 @@ The Edge provider adds the following REST API endpoints to the Airflow API:
35
35
  - ``/edge_worker/v1/health``: Check that the API endpoint is deployed and active
36
36
 
37
37
  To see full documentation of the API endpoints open the Airflow web UI and navigate to
38
- the sub-path ``/edge_worker/docs`` (Airflow 3.0) or ``/edge_worker/v1/ui`` (Airflow 2.x).
38
+ the sub-path ``/edge_worker/docs``.
39
39
 
40
40
  Web UI Plugin
41
41
  -------------
42
42
 
43
43
  .. note::
44
44
 
45
- Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow 2.x and in 3.1 and newer.
45
+ Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow 3.1 and newer.
46
46
  Alternatively you can use the CLI commands as described in :ref:`deployment:maintenance-mgmt-cli`.
47
47
 
48
48
  The Edge provider adds a web UI plugin to the Airflow web UI. The plugin is
@@ -33,13 +33,14 @@ description: |
33
33
  are provided by the API server.
34
34
 
35
35
  state: ready
36
- source-date-epoch: 1764110065
36
+ source-date-epoch: 1765299029
37
37
 
38
38
  # Note that those versions are maintained by release manager - do not update them manually
39
39
  # with the exception of case where other provider in sources has >= new provider version.
40
40
  # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
41
41
  # to be done in the same PR
42
42
  versions:
43
+ - 2.0.0
43
44
  - 1.6.0
44
45
  - 1.5.0
45
46
  - 1.4.1
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-edge3"
28
- version = "1.6.0rc2"
28
+ version = "2.0.0rc1"
29
29
  description = "Provider package apache-airflow-providers-edge3 for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  license = "Apache-2.0"
@@ -58,8 +58,8 @@ requires-python = ">=3.10"
58
58
  # Make sure to run ``prek update-providers-dependencies --all-files``
59
59
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
60
60
  dependencies = [
61
- "apache-airflow>=2.11.0,!=3.1.0",
62
- "apache-airflow-providers-common-compat>=1.10.0rc1",
61
+ "apache-airflow>=3.0.0,!=3.1.0",
62
+ "apache-airflow-providers-common-compat>=1.10.1rc1",
63
63
  "pydantic>=2.11.0",
64
64
  "retryhttp>=1.2.0,!=1.3.0",
65
65
  ]
@@ -99,8 +99,8 @@ apache-airflow-providers-common-sql = {workspace = true}
99
99
  apache-airflow-providers-standard = {workspace = true}
100
100
 
101
101
  [project.urls]
102
- "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/1.6.0"
103
- "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/1.6.0/changelog.html"
102
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0"
103
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html"
104
104
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
105
105
  "Source Code" = "https://github.com/apache/airflow"
106
106
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "1.6.0"
32
+ __version__ = "2.0.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
- "2.11.0"
35
+ "3.0.0"
36
36
  ):
37
37
  raise RuntimeError(
38
- f"The package `apache-airflow-providers-edge3:{__version__}` needs Apache Airflow 2.11.0+"
38
+ f"The package `apache-airflow-providers-edge3:{__version__}` needs Apache Airflow 3.0.0+"
39
39
  )
@@ -20,6 +20,7 @@ import json
20
20
  import logging
21
21
  import os
22
22
  from datetime import datetime
23
+ from functools import cache
23
24
  from http import HTTPStatus
24
25
  from pathlib import Path
25
26
  from typing import TYPE_CHECKING, Any
@@ -29,12 +30,12 @@ import requests
29
30
  from retryhttp import retry, wait_retry_after
30
31
  from tenacity import before_sleep_log, wait_random_exponential
31
32
 
33
+ from airflow.api_fastapi.auth.tokens import JWTGenerator
32
34
  from airflow.configuration import conf
33
35
  from airflow.providers.edge3.models.edge_worker import (
34
36
  EdgeWorkerDuplicateException,
35
37
  EdgeWorkerVersionException,
36
38
  )
37
- from airflow.providers.edge3.version_compat import AIRFLOW_V_3_0_PLUS
38
39
  from airflow.providers.edge3.worker_api.datamodels import (
39
40
  EdgeJobFetched,
40
41
  PushLogsBody,
@@ -74,6 +75,15 @@ API_RETRY_WAIT_MAX = float(
74
75
  _default_wait = wait_random_exponential(min=API_RETRY_WAIT_MIN, max=API_RETRY_WAIT_MAX)
75
76
 
76
77
 
78
+ @cache
79
+ def jwt_generator() -> JWTGenerator:
80
+ return JWTGenerator(
81
+ secret_key=conf.get("api_auth", "jwt_secret"),
82
+ valid_for=conf.getint("api_auth", "jwt_leeway", fallback=30),
83
+ audience="api",
84
+ )
85
+
86
+
77
87
  @retry(
78
88
  reraise=True,
79
89
  max_attempt_number=API_RETRIES,
@@ -84,28 +94,7 @@ _default_wait = wait_random_exponential(min=API_RETRY_WAIT_MIN, max=API_RETRY_WA
84
94
  before_sleep=before_sleep_log(logger, logging.WARNING),
85
95
  )
86
96
  def _make_generic_request(method: str, rest_path: str, data: str | None = None) -> Any:
87
- if AIRFLOW_V_3_0_PLUS:
88
- from functools import cache
89
-
90
- from airflow.api_fastapi.auth.tokens import JWTGenerator
91
-
92
- @cache
93
- def jwt_generator() -> JWTGenerator:
94
- return JWTGenerator(
95
- secret_key=conf.get("api_auth", "jwt_secret"),
96
- valid_for=conf.getint("api_auth", "jwt_leeway", fallback=30),
97
- audience="api",
98
- )
99
-
100
- generator = jwt_generator()
101
- authorization = generator.generate({"method": rest_path})
102
- else:
103
- # Airflow 2.10 compatibility
104
- from airflow.providers.edge3.worker_api.auth import jwt_signer
105
-
106
- signer = jwt_signer()
107
- authorization = signer.generate_signed_token({"method": rest_path})
108
-
97
+ authorization = jwt_generator().generate({"method": rest_path})
109
98
  api_url = conf.get("edge", "api_url")
110
99
  headers = {
111
100
  "Content-Type": "application/json",
@@ -25,7 +25,6 @@ from functools import cache
25
25
  from http import HTTPStatus
26
26
  from multiprocessing import Process
27
27
  from pathlib import Path
28
- from subprocess import Popen
29
28
  from time import sleep
30
29
  from typing import TYPE_CHECKING
31
30
 
@@ -39,7 +38,6 @@ from airflow.providers.edge3 import __version__ as edge_provider_version
39
38
  from airflow.providers.edge3.cli.api_client import (
40
39
  jobs_fetch,
41
40
  jobs_set_state,
42
- logs_logfile_path,
43
41
  logs_push,
44
42
  worker_register,
45
43
  worker_set_state,
@@ -56,7 +54,6 @@ from airflow.providers.edge3.models.edge_worker import (
56
54
  EdgeWorkerState,
57
55
  EdgeWorkerVersionException,
58
56
  )
59
- from airflow.providers.edge3.version_compat import AIRFLOW_V_3_0_PLUS
60
57
  from airflow.utils.net import getfqdn
61
58
  from airflow.utils.state import TaskInstanceState
62
59
 
@@ -218,7 +215,7 @@ class EdgeWorker:
218
215
  return 1
219
216
 
220
217
  @staticmethod
221
- def _launch_job_af3(edge_job: EdgeJobFetched) -> tuple[Process, Path]:
218
+ def _launch_job(edge_job: EdgeJobFetched):
222
219
  if TYPE_CHECKING:
223
220
  from airflow.executors.workloads import ExecuteTask
224
221
 
@@ -232,29 +229,6 @@ class EdgeWorker:
232
229
  if TYPE_CHECKING:
233
230
  assert workload.log_path # We need to assume this is defined in here
234
231
  logfile = Path(base_log_folder, workload.log_path)
235
- return process, logfile
236
-
237
- @staticmethod
238
- def _launch_job_af2_10(edge_job: EdgeJobFetched) -> tuple[Popen, Path]:
239
- """Compatibility for Airflow 2.10 Launch."""
240
- env = os.environ.copy()
241
- env["AIRFLOW__CORE__DATABASE_ACCESS_ISOLATION"] = "True"
242
- env["AIRFLOW__CORE__INTERNAL_API_URL"] = conf.get("edge", "api_url")
243
- env["_AIRFLOW__SKIP_DATABASE_EXECUTOR_COMPATIBILITY_CHECK"] = "1"
244
- command: list[str] = edge_job.command # type: ignore[assignment]
245
- process = Popen(command, close_fds=True, env=env, start_new_session=True)
246
- logfile = logs_logfile_path(edge_job.key)
247
- return process, logfile
248
-
249
- @staticmethod
250
- def _launch_job(edge_job: EdgeJobFetched):
251
- """Get the received job executed."""
252
- process: Popen | Process
253
- if AIRFLOW_V_3_0_PLUS:
254
- process, logfile = EdgeWorker._launch_job_af3(edge_job)
255
- else:
256
- # Airflow 2.10
257
- process, logfile = EdgeWorker._launch_job_af2_10(edge_job)
258
232
  EdgeWorker.jobs.append(Job(edge_job, process, logfile, 0))
259
233
 
260
234
  def start(self):
@@ -26,7 +26,7 @@ from __future__ import annotations
26
26
  from datetime import datetime
27
27
  from time import sleep
28
28
 
29
- from airflow.exceptions import AirflowNotFoundException
29
+ from airflow.providers.common.compat.sdk import AirflowNotFoundException
30
30
 
31
31
  try:
32
32
  from airflow.sdk import BaseHook
@@ -32,11 +32,14 @@ from subprocess import STDOUT, Popen
32
32
  from time import sleep
33
33
  from typing import TYPE_CHECKING, Any
34
34
 
35
- from airflow.exceptions import AirflowException, AirflowNotFoundException
36
35
  from airflow.models import BaseOperator
37
36
  from airflow.models.dag import DAG
38
37
  from airflow.models.variable import Variable
39
- from airflow.providers.common.compat.sdk import AirflowSkipException
38
+ from airflow.providers.common.compat.sdk import (
39
+ AirflowException,
40
+ AirflowNotFoundException,
41
+ AirflowSkipException,
42
+ )
40
43
  from airflow.providers.standard.operators.empty import EmptyOperator
41
44
  from airflow.sdk.execution_time.context import context_to_airflow_vars
42
45
 
@@ -29,15 +29,14 @@ from sqlalchemy.orm import Session
29
29
 
30
30
  from airflow.cli.cli_config import GroupCommand
31
31
  from airflow.configuration import conf
32
+ from airflow.executors import workloads
32
33
  from airflow.executors.base_executor import BaseExecutor
33
34
  from airflow.models.taskinstance import TaskInstance
34
- from airflow.providers.common.compat.sdk import timezone
35
+ from airflow.providers.common.compat.sdk import Stats, timezone
35
36
  from airflow.providers.edge3.cli.edge_command import EDGE_COMMANDS
36
37
  from airflow.providers.edge3.models.edge_job import EdgeJobModel
37
38
  from airflow.providers.edge3.models.edge_logs import EdgeLogsModel
38
39
  from airflow.providers.edge3.models.edge_worker import EdgeWorkerModel, EdgeWorkerState, reset_metrics
39
- from airflow.providers.edge3.version_compat import AIRFLOW_V_3_0_PLUS
40
- from airflow.stats import Stats
41
40
  from airflow.utils.db import DBLocks, create_global_lock
42
41
  from airflow.utils.session import NEW_SESSION, provide_session
43
42
  from airflow.utils.state import TaskInstanceState
@@ -69,8 +68,10 @@ class EdgeExecutor(BaseExecutor):
69
68
  """
70
69
  Check if already existing table matches the newest table schema.
71
70
 
72
- workaround till support for Airflow 2.x is dropped,
71
+ workaround as Airflow 2.x had no support for provider DB migrations,
73
72
  then it is possible to use alembic also for provider distributions.
73
+
74
+ TODO(jscheffl): Change to alembic DB migrations in the future.
74
75
  """
75
76
  inspector = inspect(engine)
76
77
  edge_job_columns = None
@@ -125,66 +126,13 @@ class EdgeExecutor(BaseExecutor):
125
126
  self.edge_queued_tasks = deepcopy(self.queued_tasks)
126
127
  super()._process_tasks(task_tuples) # type: ignore[misc]
127
128
 
128
- @provide_session
129
- def execute_async(
130
- self,
131
- key: TaskInstanceKey,
132
- command: CommandType,
133
- queue: str | None = None,
134
- executor_config: Any | None = None,
135
- session: Session = NEW_SESSION,
136
- ) -> None:
137
- """Execute asynchronously. Airflow 2.10 entry point to execute a task."""
138
- # Use of a temporary trick to get task instance, will be changed with Airflow 3.0.0
139
- # code works together with _process_tasks overwrite to get task instance.
140
- # TaskInstance in fourth element
141
- task_instance = self.edge_queued_tasks[key][3] # type: ignore[index]
142
- del self.edge_queued_tasks[key]
143
-
144
- self.validate_airflow_tasks_run_command(command) # type: ignore[attr-defined]
145
-
146
- # Check if job already exists with same dag_id, task_id, run_id, map_index, try_number
147
- existing_job = (
148
- session.query(EdgeJobModel)
149
- .filter_by(
150
- dag_id=key.dag_id,
151
- task_id=key.task_id,
152
- run_id=key.run_id,
153
- map_index=key.map_index,
154
- try_number=key.try_number,
155
- )
156
- .first()
157
- )
158
-
159
- if existing_job:
160
- existing_job.state = TaskInstanceState.QUEUED
161
- existing_job.queue = queue or DEFAULT_QUEUE
162
- existing_job.concurrency_slots = task_instance.pool_slots
163
- existing_job.command = str(command)
164
- else:
165
- session.add(
166
- EdgeJobModel(
167
- dag_id=key.dag_id,
168
- task_id=key.task_id,
169
- run_id=key.run_id,
170
- map_index=key.map_index,
171
- try_number=key.try_number,
172
- state=TaskInstanceState.QUEUED,
173
- queue=queue or DEFAULT_QUEUE,
174
- concurrency_slots=task_instance.pool_slots,
175
- command=str(command),
176
- )
177
- )
178
-
179
129
  @provide_session
180
130
  def queue_workload(
181
131
  self,
182
- workload: Any, # Note actually "airflow.executors.workloads.All" but not existing in Airflow 2.10
132
+ workload: workloads.All,
183
133
  session: Session = NEW_SESSION,
184
134
  ) -> None:
185
135
  """Put new workload to queue. Airflow 3 entry point to execute a task."""
186
- from airflow.executors import workloads
187
-
188
136
  if not isinstance(workload, workloads.ExecuteTask):
189
137
  raise TypeError(f"Don't know how to queue workload of type {type(workload).__name__}")
190
138
 
@@ -263,11 +211,7 @@ class EdgeExecutor(BaseExecutor):
263
211
 
264
212
  def _update_orphaned_jobs(self, session: Session) -> bool:
265
213
  """Update status ob jobs when workers die and don't update anymore."""
266
- if AIRFLOW_V_3_0_PLUS:
267
- heartbeat_interval_config_name = "task_instance_heartbeat_timeout"
268
- else:
269
- heartbeat_interval_config_name = "scheduler_zombie_task_threshold"
270
- heartbeat_interval: int = conf.getint("scheduler", heartbeat_interval_config_name)
214
+ heartbeat_interval: int = conf.getint("scheduler", "task_instance_heartbeat_timeout")
271
215
  lifeless_jobs: list[EdgeJobModel] = (
272
216
  session.query(EdgeJobModel)
273
217
  .with_for_update(skip_locked=True)
@@ -26,11 +26,9 @@ from typing import TYPE_CHECKING
26
26
  from sqlalchemy import Integer, String, delete, select
27
27
  from sqlalchemy.orm import Mapped
28
28
 
29
- from airflow.exceptions import AirflowException
30
29
  from airflow.models.base import Base
31
- from airflow.providers.common.compat.sdk import timezone
30
+ from airflow.providers.common.compat.sdk import AirflowException, Stats, timezone
32
31
  from airflow.providers.common.compat.sqlalchemy.orm import mapped_column
33
- from airflow.stats import Stats
34
32
  from airflow.utils.log.logging_mixin import LoggingMixin
35
33
  from airflow.utils.providers_configuration_loader import providers_configuration_loaded
36
34
  from airflow.utils.session import NEW_SESSION, provide_session