apache-airflow-providers-edge3 1.5.0__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 (168) hide show
  1. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/.pre-commit-config.yaml +2 -2
  2. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/PKG-INFO +13 -13
  3. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/README.rst +8 -8
  4. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/architecture.rst +2 -2
  5. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/changelog.rst +61 -0
  6. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/deployment.rst +2 -2
  7. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/index.rst +9 -9
  8. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/ui_plugin.rst +3 -3
  9. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/provider.yaml +3 -1
  10. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/pyproject.toml +5 -5
  11. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/__init__.py +3 -3
  12. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/api_client.py +23 -26
  13. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/worker.py +9 -28
  14. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/integration_test.py +1 -1
  15. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/win_test.py +32 -22
  16. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/executors/edge_executor.py +7 -63
  17. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_worker.py +7 -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-2.0.0rc1/src/airflow/providers/edge3/plugins/www/dist/main.umd.cjs +14 -0
  20. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/common.ts +6 -1
  21. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/ensureQueryData.ts +6 -1
  22. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/prefetch.ts +6 -1
  23. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/queries.ts +6 -2
  24. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/suspense.ts +6 -1
  25. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/schemas.gen.ts +5 -0
  26. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/services.gen.ts +18 -3
  27. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/types.gen.ts +24 -0
  28. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/package.json +17 -15
  29. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/pnpm-lock.yaml +1194 -1244
  30. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/SearchBar.tsx +103 -0
  31. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/InputGroup.tsx +57 -0
  32. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Content.tsx +37 -0
  33. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Item.tsx +34 -0
  34. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Root.tsx +24 -0
  35. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Trigger.tsx +54 -0
  36. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/ValueText.tsx +51 -0
  37. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/index.ts +34 -0
  38. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/index.ts +3 -0
  39. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/constants.ts +43 -0
  40. apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +224 -0
  41. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/version_compat.py +0 -2
  42. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/auth.py +11 -35
  43. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/datamodels.py +3 -2
  44. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/health.py +1 -1
  45. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/jobs.py +10 -11
  46. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/logs.py +5 -8
  47. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/ui.py +14 -3
  48. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/worker.py +19 -12
  49. {apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/openapi → apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/worker_api}/v2-edge-generated.yaml +59 -5
  50. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_worker.py +22 -46
  51. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/executors/test_edge_executor.py +3 -175
  52. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/plugins/test_edge_executor_plugin.py +5 -43
  53. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_jobs.py +2 -1
  54. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_worker.py +49 -1
  55. apache_airflow_providers_edge3-2.0.0rc1/www-hash.txt +1 -0
  56. apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/openapi/__init__.py +0 -19
  57. apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/openapi/edge_worker_api_v1.yaml +0 -808
  58. apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/plugins/edge_executor_plugin.py +0 -297
  59. apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/plugins/www/dist/main.umd.cjs +0 -14
  60. apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +0 -135
  61. apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/worker_api/routes/_v2_compat.py +0 -136
  62. apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/worker_api/routes/_v2_routes.py +0 -237
  63. apache_airflow_providers_edge3-1.5.0/www-hash.txt +0 -1
  64. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/LICENSE +0 -0
  65. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/NOTICE +0 -0
  66. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/cli-ref.rst +0 -0
  67. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/commits.rst +0 -0
  68. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/conf.py +0 -0
  69. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/configurations-ref.rst +0 -0
  70. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/edge_executor.rst +0 -0
  71. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/distributed_architecture.svg +0 -0
  72. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/edge_package.svg +0 -0
  73. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/worker_hosts.png +0 -0
  74. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/install_on_windows.rst +0 -0
  75. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/installing-providers-from-sources.rst +0 -0
  76. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/security.rst +0 -0
  77. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/why_edge.rst +0 -0
  78. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/__init__.py +0 -0
  79. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/__init__.py +0 -0
  80. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/__init__.py +0 -0
  81. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/dataclasses.py +0 -0
  82. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/edge_command.py +0 -0
  83. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/signalling.py +0 -0
  84. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/__init__.py +0 -0
  85. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/win_notepad.py +0 -0
  86. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/executors/__init__.py +0 -0
  87. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/get_provider_info.py +0 -0
  88. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/__init__.py +0 -0
  89. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_job.py +0 -0
  90. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_logs.py +0 -0
  91. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/__init__.py +0 -0
  92. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/templates/edge_worker_hosts.html +0 -0
  93. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/templates/edge_worker_jobs.html +0 -0
  94. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.gitignore +0 -0
  95. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.prettierignore +0 -0
  96. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.prettierrc +0 -0
  97. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/README.md +0 -0
  98. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/dist/main.d.ts +0 -0
  99. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/eslint.config.js +0 -0
  100. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/index.html +0 -0
  101. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/index.ts +0 -0
  102. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/infiniteQueries.ts +0 -0
  103. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiError.ts +0 -0
  104. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiRequestOptions.ts +0 -0
  105. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiResult.ts +0 -0
  106. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/CancelablePromise.ts +0 -0
  107. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/OpenAPI.ts +0 -0
  108. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/request.ts +0 -0
  109. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/index.ts +0 -0
  110. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/AddQueueButton.tsx +0 -0
  111. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ErrorAlert.tsx +0 -0
  112. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceEditCommentButton.tsx +0 -0
  113. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceEnterButton.tsx +0 -0
  114. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceExitButton.tsx +0 -0
  115. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/RemoveQueueButton.tsx +0 -0
  116. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/StateBadge.tsx +0 -0
  117. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/StateIcon.tsx +0 -0
  118. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerDeleteButton.tsx +0 -0
  119. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerOperations.tsx +0 -0
  120. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerShutdownButton.tsx +0 -0
  121. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerStateBadge.tsx +0 -0
  122. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerStateIcon.tsx +0 -0
  123. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Alert.tsx +0 -0
  124. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/CloseButton.tsx +0 -0
  125. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/ScrollToAnchor.tsx +0 -0
  126. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/createToaster.ts +0 -0
  127. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/ColorModeProvider.tsx +0 -0
  128. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/index.ts +0 -0
  129. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/useColorMode.tsx +0 -0
  130. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/dev.tsx +0 -0
  131. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/layouts/EdgeLayout.tsx +0 -0
  132. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx +0 -0
  133. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/main.tsx +0 -0
  134. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx +0 -0
  135. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/README.md +0 -0
  136. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/cloud-computer-dark.svg +0 -0
  137. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/cloud-computer.svg +0 -0
  138. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/theme.ts +0 -0
  139. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/config.ts +0 -0
  140. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/index.ts +0 -0
  141. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/useContainerWidth.ts +0 -0
  142. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/vite-env.d.ts +0 -0
  143. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/testsSetup.ts +0 -0
  144. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.app.json +0 -0
  145. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.json +0 -0
  146. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.lib.json +0 -0
  147. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.node.json +0 -0
  148. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/vite.config.ts +0 -0
  149. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/__init__.py +0 -0
  150. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/app.py +0 -0
  151. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/datamodels_ui.py +0 -0
  152. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/__init__.py +0 -0
  153. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/conftest.py +0 -0
  154. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/__init__.py +0 -0
  155. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/__init__.py +0 -0
  156. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/__init__.py +0 -0
  157. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_api_client.py +0 -0
  158. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_dataclasses.py +0 -0
  159. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_edge_command.py +0 -0
  160. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_signalling.py +0 -0
  161. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/executors/__init__.py +0 -0
  162. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/models/__init__.py +0 -0
  163. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/plugins/__init__.py +0 -0
  164. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/__init__.py +0 -0
  165. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/__init__.py +0 -0
  166. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_health.py +0 -0
  167. {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_logs.py +0 -0
  168. {apache_airflow_providers_edge3-1.5.0 → 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.5.0
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.10.0,!=3.1.0
26
- Requires-Dist: apache-airflow-providers-common-compat>=1.8.0
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.apache.org/docs/apache-airflow-providers-edge3/1.5.0/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.5.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.5.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.5.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.10.0,!=3.1.0``
105
- ``apache-airflow-providers-common-compat`` ``>=1.8.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.5.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.5.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.5.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.10.0,!=3.1.0``
69
- ``apache-airflow-providers-common-compat`` ``>=1.8.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.5.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,67 @@
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
+
56
+ 1.6.0
57
+ .....
58
+
59
+ .. note::
60
+ This release of provider is only available for Airflow 2.11+ as explained in the
61
+ Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
62
+
63
+ Features
64
+ ~~~~~~~~
65
+
66
+ * ``Send executor integration info in workload (#57800)``
67
+ * ``Prevent duplicate edge workers unless existing worker is offline or unkown (#58586)``
68
+ * ``Add multi-select state filter to worker page (#58505)``
69
+ * ``Add queue name filtering to Edge Worker tab (#58416)``
70
+ * ``Add search functionality to Edge Worker tab (#58331)``
71
+
72
+ Bug Fixes
73
+ ~~~~~~~~~
74
+
75
+ * ``Use 'before_sleep_log' in retries of Edge Worker (#58480)``
76
+
77
+ Misc
78
+ ~~~~
79
+
80
+ * ``Bump the edge-ui-package-updates group across 1 directory with 8 updates (#58780)``
81
+ * ``Move out some exceptions to TaskSDK (#54505)``
82
+ * ``Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)``
83
+ * ``Upgrade Edge TS dependencies (#58413)``
84
+ * ``Fix lower bound dependency to common-compat provider (#58833)``
85
+
86
+ .. Below changes are excluded from the changelog. Move them to
87
+ appropriate section above if needed. Do not delete the lines(!):
88
+ * ``Remove SDK reference for NOTSET in Airflow Core (#58258)``
89
+ * ``Prepare release for 2025-11-27 wave of providers (#58697)``
90
+
30
91
  1.5.0
31
92
  .....
32
93
 
@@ -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.5.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.10.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.10.0,!=3.1.0``
117
- ``apache-airflow-providers-common-compat`` ``>=1.8.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.5.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.5.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.5.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.5.0.tar.gz.sha512>`__)
148
- * `The apache-airflow-providers-edge3 1.5.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.5.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.5.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-1.5.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,15 @@ description: |
33
33
  are provided by the API server.
34
34
 
35
35
  state: ready
36
- source-date-epoch: 1763069258
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
44
+ - 1.6.0
43
45
  - 1.5.0
44
46
  - 1.4.1
45
47
  - 1.4.0
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-edge3"
28
- version = "1.5.0"
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.10.0,!=3.1.0",
62
- "apache-airflow-providers-common-compat>=1.8.0",
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.apache.org/docs/apache-airflow-providers-edge3/1.5.0"
103
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.5.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.5.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.10.0"
35
+ "3.0.0"
36
36
  ):
37
37
  raise RuntimeError(
38
- f"The package `apache-airflow-providers-edge3:{__version__}` needs Apache Airflow 2.10.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
@@ -27,11 +28,14 @@ from urllib.parse import quote, urljoin
27
28
 
28
29
  import requests
29
30
  from retryhttp import retry, wait_retry_after
30
- from tenacity import before_log, wait_random_exponential
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
- from airflow.providers.edge3.models.edge_worker import EdgeWorkerVersionException
34
- from airflow.providers.edge3.version_compat import AIRFLOW_V_3_0_PLUS
35
+ from airflow.providers.edge3.models.edge_worker import (
36
+ EdgeWorkerDuplicateException,
37
+ EdgeWorkerVersionException,
38
+ )
35
39
  from airflow.providers.edge3.worker_api.datamodels import (
36
40
  EdgeJobFetched,
37
41
  PushLogsBody,
@@ -71,6 +75,15 @@ API_RETRY_WAIT_MAX = float(
71
75
  _default_wait = wait_random_exponential(min=API_RETRY_WAIT_MIN, max=API_RETRY_WAIT_MAX)
72
76
 
73
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
+
74
87
  @retry(
75
88
  reraise=True,
76
89
  max_attempt_number=API_RETRIES,
@@ -78,31 +91,10 @@ _default_wait = wait_random_exponential(min=API_RETRY_WAIT_MIN, max=API_RETRY_WA
78
91
  wait_network_errors=_default_wait,
79
92
  wait_timeouts=_default_wait,
80
93
  wait_rate_limited=wait_retry_after(fallback=_default_wait), # No infinite timeout on HTTP 429
81
- before_sleep=before_log(logger, logging.WARNING),
94
+ before_sleep=before_sleep_log(logger, logging.WARNING),
82
95
  )
83
96
  def _make_generic_request(method: str, rest_path: str, data: str | None = None) -> Any:
84
- if AIRFLOW_V_3_0_PLUS:
85
- from functools import cache
86
-
87
- from airflow.api_fastapi.auth.tokens import JWTGenerator
88
-
89
- @cache
90
- def jwt_generator() -> JWTGenerator:
91
- return JWTGenerator(
92
- secret_key=conf.get("api_auth", "jwt_secret"),
93
- valid_for=conf.getint("api_auth", "jwt_leeway", fallback=30),
94
- audience="api",
95
- )
96
-
97
- generator = jwt_generator()
98
- authorization = generator.generate({"method": rest_path})
99
- else:
100
- # Airflow 2.10 compatibility
101
- from airflow.providers.edge3.worker_api.auth import jwt_signer
102
-
103
- signer = jwt_signer()
104
- authorization = signer.generate_signed_token({"method": rest_path})
105
-
97
+ authorization = jwt_generator().generate({"method": rest_path})
106
98
  api_url = conf.get("edge", "api_url")
107
99
  headers = {
108
100
  "Content-Type": "application/json",
@@ -132,6 +124,11 @@ def worker_register(
132
124
  except requests.HTTPError as e:
133
125
  if e.response.status_code == 400:
134
126
  raise EdgeWorkerVersionException(str(e))
127
+ if e.response.status_code == 409:
128
+ raise EdgeWorkerDuplicateException(
129
+ f"A worker with the name '{hostname}' is already active. "
130
+ "Please ensure worker names are unique, or stop the existing worker before starting a new one."
131
+ )
135
132
  raise e
136
133
  return WorkerRegistrationReturn(**result)
137
134
 
@@ -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,
@@ -51,8 +49,11 @@ from airflow.providers.edge3.cli.signalling import (
51
49
  status_file_path,
52
50
  write_pid_to_pidfile,
53
51
  )
54
- from airflow.providers.edge3.models.edge_worker import EdgeWorkerState, EdgeWorkerVersionException
55
- from airflow.providers.edge3.version_compat import AIRFLOW_V_3_0_PLUS
52
+ from airflow.providers.edge3.models.edge_worker import (
53
+ EdgeWorkerDuplicateException,
54
+ EdgeWorkerState,
55
+ EdgeWorkerVersionException,
56
+ )
56
57
  from airflow.utils.net import getfqdn
57
58
  from airflow.utils.state import TaskInstanceState
58
59
 
@@ -214,7 +215,7 @@ class EdgeWorker:
214
215
  return 1
215
216
 
216
217
  @staticmethod
217
- def _launch_job_af3(edge_job: EdgeJobFetched) -> tuple[Process, Path]:
218
+ def _launch_job(edge_job: EdgeJobFetched):
218
219
  if TYPE_CHECKING:
219
220
  from airflow.executors.workloads import ExecuteTask
220
221
 
@@ -228,29 +229,6 @@ class EdgeWorker:
228
229
  if TYPE_CHECKING:
229
230
  assert workload.log_path # We need to assume this is defined in here
230
231
  logfile = Path(base_log_folder, workload.log_path)
231
- return process, logfile
232
-
233
- @staticmethod
234
- def _launch_job_af2_10(edge_job: EdgeJobFetched) -> tuple[Popen, Path]:
235
- """Compatibility for Airflow 2.10 Launch."""
236
- env = os.environ.copy()
237
- env["AIRFLOW__CORE__DATABASE_ACCESS_ISOLATION"] = "True"
238
- env["AIRFLOW__CORE__INTERNAL_API_URL"] = conf.get("edge", "api_url")
239
- env["_AIRFLOW__SKIP_DATABASE_EXECUTOR_COMPATIBILITY_CHECK"] = "1"
240
- command: list[str] = edge_job.command # type: ignore[assignment]
241
- process = Popen(command, close_fds=True, env=env, start_new_session=True)
242
- logfile = logs_logfile_path(edge_job.key)
243
- return process, logfile
244
-
245
- @staticmethod
246
- def _launch_job(edge_job: EdgeJobFetched):
247
- """Get the received job executed."""
248
- process: Popen | Process
249
- if AIRFLOW_V_3_0_PLUS:
250
- process, logfile = EdgeWorker._launch_job_af3(edge_job)
251
- else:
252
- # Airflow 2.10
253
- process, logfile = EdgeWorker._launch_job_af2_10(edge_job)
254
232
  EdgeWorker.jobs.append(Job(edge_job, process, logfile, 0))
255
233
 
256
234
  def start(self):
@@ -262,6 +240,9 @@ class EdgeWorker:
262
240
  except EdgeWorkerVersionException as e:
263
241
  logger.info("Version mismatch of Edge worker and Core. Shutting down worker.")
264
242
  raise SystemExit(str(e))
243
+ except EdgeWorkerDuplicateException as e:
244
+ logger.error(str(e))
245
+ raise SystemExit(str(e))
265
246
  except HTTPError as e:
266
247
  if e.response.status_code == HTTPStatus.NOT_FOUND:
267
248
  raise SystemExit("Error: API endpoint is not ready, please set [edge] api_enabled=True.")
@@ -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,42 +32,52 @@ from subprocess import STDOUT, Popen
32
32
  from time import sleep
33
33
  from typing import TYPE_CHECKING, Any
34
34
 
35
- try:
36
- from airflow.sdk import task, task_group
37
- except ImportError:
38
- # Airflow 2 path
39
- from airflow.decorators import task, task_group # type: ignore[attr-defined,no-redef]
40
- from airflow.exceptions import AirflowException, AirflowNotFoundException, AirflowSkipException
41
35
  from airflow.models import BaseOperator
42
36
  from airflow.models.dag import DAG
43
37
  from airflow.models.variable import Variable
38
+ from airflow.providers.common.compat.sdk import (
39
+ AirflowException,
40
+ AirflowNotFoundException,
41
+ AirflowSkipException,
42
+ )
44
43
  from airflow.providers.standard.operators.empty import EmptyOperator
44
+ from airflow.sdk.execution_time.context import context_to_airflow_vars
45
45
 
46
+ try:
47
+ from airflow.sdk import task, task_group
48
+ except ImportError:
49
+ from airflow.decorators import task, task_group # type: ignore[attr-defined,no-redef]
46
50
  try:
47
51
  from airflow.sdk import BaseHook
48
52
  except ImportError:
49
53
  from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]
50
- from airflow.sdk import Param
51
-
54
+ try:
55
+ from airflow.sdk import Param
56
+ except ImportError:
57
+ from airflow.models import Param # type: ignore[attr-defined,no-redef]
52
58
  try:
53
59
  from airflow.sdk import TriggerRule
54
60
  except ImportError:
55
- # Compatibility for Airflow < 3.1
56
61
  from airflow.utils.trigger_rule import TriggerRule # type: ignore[no-redef,attr-defined]
57
- from airflow.sdk.execution_time.context import context_to_airflow_vars
58
- from airflow.utils.types import ArgNotSet
59
-
60
- if TYPE_CHECKING:
61
- try:
62
- from airflow.sdk.types import RuntimeTaskInstanceProtocol as TaskInstance
63
- except ImportError:
64
- from airflow.models import TaskInstance # type: ignore[assignment]
65
- from airflow.utils.context import Context
66
-
67
62
  try:
68
- from airflow.operators.python import PythonOperator
63
+ from airflow.providers.common.compat.standard.operators import PythonOperator
64
+ except ImportError:
65
+ from airflow.operators.python import PythonOperator # type: ignore[no-redef]
66
+ try:
67
+ from airflow.sdk.definitions._internal.types import NOTSET, ArgNotSet
69
68
  except ImportError:
70
- from airflow.providers.common.compat.standard.operators import PythonOperator # type: ignore[no-redef]
69
+ from airflow.utils.types import NOTSET, ArgNotSet # type: ignore[attr-defined,no-redef]
70
+ try:
71
+ from airflow.sdk.definitions._internal.types import is_arg_set
72
+ except ImportError:
73
+
74
+ def is_arg_set(value): # type: ignore[misc,no-redef]
75
+ return value is not NOTSET
76
+
77
+
78
+ if TYPE_CHECKING:
79
+ from airflow.sdk import Context
80
+ from airflow.sdk.types import RuntimeTaskInstanceProtocol as TaskInstance
71
81
 
72
82
 
73
83
  class CmdOperator(BaseOperator):
@@ -163,7 +173,7 @@ class CmdOperator(BaseOperator):
163
173
  # When using the @task.command decorator, the command is not known until the underlying Python
164
174
  # callable is executed and therefore set to NOTSET initially. This flag is useful during execution to
165
175
  # determine whether the command value needs to re-rendered.
166
- self._init_command_not_set = isinstance(self.command, ArgNotSet)
176
+ self._init_command_not_set = not is_arg_set(self.command)
167
177
 
168
178
  @staticmethod
169
179
  def refresh_command(ti: TaskInstance) -> None: