apache-airflow-providers-fab 2.4.2__tar.gz → 2.4.3rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of apache-airflow-providers-fab might be problematic. Click here for more details.

Files changed (227) hide show
  1. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/PKG-INFO +19 -8
  2. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/README.rst +13 -3
  3. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/changelog.rst +22 -0
  4. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/index.rst +4 -3
  5. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/provider.yaml +2 -1
  6. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/pyproject.toml +9 -5
  7. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/__init__.py +1 -1
  8. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/cli_commands/definition.py +32 -0
  9. apache_airflow_providers_fab-2.4.3rc1/src/airflow/providers/fab/auth_manager/cli_commands/permissions_command.py +196 -0
  10. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/fab_auth_manager.py +2 -0
  11. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/security_manager/override.py +3 -2
  12. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/package-lock.json +84 -83
  13. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/package.json +4 -4
  14. apache_airflow_providers_fab-2.4.3rc1/tests/unit/fab/auth_manager/cli_commands/test_permissions_command.py +353 -0
  15. apache_airflow_providers_fab-2.4.3rc1/www-hash.txt +1 -0
  16. apache_airflow_providers_fab-2.4.2/www-hash.txt +0 -1
  17. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/3rd-party-licenses/LICENSES-ui.txt +0 -0
  18. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/NOTICE +0 -0
  19. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/api-ref/fab-public-api-ref.rst +0 -0
  20. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/api-ref/fab-token-api-ref.rst +0 -0
  21. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/auth-manager/access-control.rst +0 -0
  22. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/auth-manager/api-authentication.rst +0 -0
  23. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/auth-manager/configuring-flask-app.rst +0 -0
  24. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/auth-manager/index.rst +0 -0
  25. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/auth-manager/security.rst +0 -0
  26. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/auth-manager/token.rst +0 -0
  27. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/auth-manager/webserver-authentication.rst +0 -0
  28. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/cli-ref.rst +0 -0
  29. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/commits.rst +0 -0
  30. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/conf.py +0 -0
  31. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/configurations-ref.rst +0 -0
  32. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/img/add-role.png +0 -0
  33. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/img/diagram_fab_auth_manager_airflow_architecture.md5sum +0 -0
  34. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/img/diagram_fab_auth_manager_airflow_architecture.png +0 -0
  35. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/img/diagram_fab_auth_manager_airflow_architecture.py +0 -0
  36. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/img/new-role.png +0 -0
  37. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/installing-providers-from-sources.rst +0 -0
  38. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/migrations-ref.rst +0 -0
  39. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/security.rst +0 -0
  40. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/docs/upgrading.rst +0 -0
  41. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/__init__.py +0 -0
  42. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/3rd-party-licenses/LICENSES-ui.txt +0 -0
  43. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/__init__.py +0 -0
  44. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/LICENSE +0 -0
  45. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/alembic.ini +0 -0
  46. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/__init__.py +0 -0
  47. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api/__init__.py +0 -0
  48. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api/auth/__init__.py +0 -0
  49. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api/auth/backend/__init__.py +0 -0
  50. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api/auth/backend/basic_auth.py +0 -0
  51. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api/auth/backend/kerberos_auth.py +0 -0
  52. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api/auth/backend/session.py +0 -0
  53. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_endpoints/__init__.py +0 -0
  54. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py +0 -0
  55. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py +0 -0
  56. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/__init__.py +0 -0
  57. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/__init__.py +0 -0
  58. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/login.py +0 -0
  59. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/__init__.py +0 -0
  60. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/v2-fab-auth-manager-generated.yaml +0 -0
  61. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
  62. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py +0 -0
  63. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
  64. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/api_fastapi/services/login.py +0 -0
  65. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/cli_commands/__init__.py +0 -0
  66. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/cli_commands/db_command.py +0 -0
  67. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/cli_commands/role_command.py +0 -0
  68. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/cli_commands/sync_perm_command.py +0 -0
  69. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/cli_commands/user_command.py +0 -0
  70. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/cli_commands/utils.py +0 -0
  71. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/models/__init__.py +0 -0
  72. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/models/anonymous_user.py +0 -0
  73. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/models/db.py +0 -0
  74. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/openapi/__init__.py +0 -0
  75. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/openapi/v1-flask-api.yaml +0 -0
  76. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/schemas/__init__.py +0 -0
  77. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/schemas/role_and_permission_schema.py +0 -0
  78. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/schemas/user_schema.py +0 -0
  79. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/security_manager/__init__.py +0 -0
  80. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/security_manager/constants.py +0 -0
  81. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/views/__init__.py +0 -0
  82. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/views/permissions.py +0 -0
  83. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/views/roles_list.py +0 -0
  84. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/views/user.py +0 -0
  85. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/views/user_edit.py +0 -0
  86. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/auth_manager/views/user_stats.py +0 -0
  87. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/get_provider_info.py +0 -0
  88. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/migrations/README +0 -0
  89. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/migrations/__init__.py +0 -0
  90. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/migrations/env.py +0 -0
  91. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/migrations/script.py.mako +0 -0
  92. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/migrations/versions/0001_1_4_0_create_ab_tables_if_missing.py +0 -0
  93. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/migrations/versions/__init__.py +0 -0
  94. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/version_compat.py +0 -0
  95. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/__init__.py +0 -0
  96. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/airflow_flask_app.py +0 -0
  97. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/api_connexion/__init__.py +0 -0
  98. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/api_connexion/exceptions.py +0 -0
  99. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/api_connexion/parameters.py +0 -0
  100. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/api_connexion/security.py +0 -0
  101. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/api_connexion/types.py +0 -0
  102. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/app.py +0 -0
  103. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/auth.py +0 -0
  104. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/constants.py +0 -0
  105. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/__init__.py +0 -0
  106. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/init_appbuilder.py +0 -0
  107. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/init_jinja_globals.py +0 -0
  108. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/init_manifest_files.py +0 -0
  109. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/init_security.py +0 -0
  110. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/init_session.py +0 -0
  111. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/init_views.py +0 -0
  112. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/extensions/init_wsgi_middlewares.py +0 -0
  113. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/security/__init__.py +0 -0
  114. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/security/permissions.py +0 -0
  115. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/security_appless.py +0 -0
  116. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/security_manager.py +0 -0
  117. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/session.py +0 -0
  118. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/css/bootstrap-theme.css +0 -0
  119. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/css/flash.css +0 -0
  120. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/css/loading-dots.css +0 -0
  121. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/css/main.css +0 -0
  122. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/css/material-icons.css +0 -0
  123. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/48f0ea180c40270a5b05.png +0 -0
  124. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/649c0b07771e68fafdeb.png +0 -0
  125. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/743.fc7a7c6ef9d09365976e.js +0 -0
  126. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/743.fc7a7c6ef9d09365976e.js.LICENSE.txt +0 -0
  127. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.ff5a35f322070b094aa2.css +0 -0
  128. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.ff5a35f322070b094aa2.js +0 -0
  129. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/f7490d556a6c42e49ba4.png +0 -0
  130. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/flash.5583a9e0cf11f2be93da.css +0 -0
  131. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/flash.5583a9e0cf11f2be93da.js +0 -0
  132. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.css +0 -0
  133. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js +0 -0
  134. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js.LICENSE.txt +0 -0
  135. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/loadingDots.2e5f555f0753107b0300.css +0 -0
  136. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/loadingDots.2e5f555f0753107b0300.js +0 -0
  137. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/main.3cf3be1a0c5439bb640d.css +0 -0
  138. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/main.3cf3be1a0c5439bb640d.js +0 -0
  139. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/main.3cf3be1a0c5439bb640d.js.LICENSE.txt +0 -0
  140. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/manifest.json +0 -0
  141. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/materialIcons.3e67dd6fbfcc4f3b5105.css +0 -0
  142. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/materialIcons.3e67dd6fbfcc4f3b5105.js +0 -0
  143. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/moment.9baee5ec3d7639a10897.js +0 -0
  144. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/oss-licenses.json +0 -0
  145. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/dist/runtime.ad800fc1845ad5c6ddeb.js +0 -0
  146. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/js/datetime_utils.js +0 -0
  147. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/js/main.js +0 -0
  148. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/pin_100.png +0 -0
  149. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/pin_32.png +0 -0
  150. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/sort_asc.png +0 -0
  151. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/sort_both.png +0 -0
  152. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/static/sort_desc.png +0 -0
  153. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/airflow/_messages.html +0 -0
  154. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/airflow/error.html +0 -0
  155. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/airflow/main.html +0 -0
  156. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/airflow/traceback.html +0 -0
  157. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/appbuilder/flash.html +0 -0
  158. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/appbuilder/index.html +0 -0
  159. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/appbuilder/navbar.html +0 -0
  160. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/appbuilder/navbar_menu.html +0 -0
  161. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/templates/appbuilder/navbar_right.html +0 -0
  162. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/utils.py +0 -0
  163. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/views.py +0 -0
  164. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/src/airflow/providers/fab/www/webpack.config.js +0 -0
  165. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/conftest.py +0 -0
  166. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/__init__.py +0 -0
  167. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/__init__.py +0 -0
  168. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/__init__.py +0 -0
  169. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api/__init__.py +0 -0
  170. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api/auth/__init__.py +0 -0
  171. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api/auth/backend/__init__.py +0 -0
  172. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api/auth/backend/test_basic_auth.py +0 -0
  173. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api/auth/backend/test_kerberos_auth.py +0 -0
  174. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api/auth/backend/test_session.py +0 -0
  175. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_endpoints/__init__.py +0 -0
  176. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_endpoints/api_connexion_utils.py +0 -0
  177. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_endpoints/remote_user_api_auth_backend.py +0 -0
  178. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_endpoints/test_auth.py +0 -0
  179. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_endpoints/test_role_and_permission_endpoint.py +0 -0
  180. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_endpoints/test_user_endpoint.py +0 -0
  181. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_fastapi/__init__.py +0 -0
  182. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_fastapi/conftest.py +0 -0
  183. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
  184. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_fastapi/routes/test_login.py +0 -0
  185. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
  186. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/api_fastapi/services/test_login.py +0 -0
  187. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/cli_commands/__init__.py +0 -0
  188. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/cli_commands/test_db_command.py +0 -0
  189. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/cli_commands/test_definition.py +0 -0
  190. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/cli_commands/test_role_command.py +0 -0
  191. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/cli_commands/test_sync_perm_command.py +0 -0
  192. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/cli_commands/test_user_command.py +0 -0
  193. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/cli_commands/test_utils.py +0 -0
  194. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/conftest.py +0 -0
  195. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/models/__init__.py +0 -0
  196. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/models/test_anonymous_user.py +0 -0
  197. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/models/test_db.py +0 -0
  198. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/models/test_user_model.py +0 -0
  199. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/schemas/__init__.py +0 -0
  200. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/schemas/test_role_and_permission_schema.py +0 -0
  201. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/schemas/test_user_schema.py +0 -0
  202. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/security_manager/__init__.py +0 -0
  203. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/security_manager/test_constants.py +0 -0
  204. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/security_manager/test_override.py +0 -0
  205. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/test_fab_auth_manager.py +0 -0
  206. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/test_models.py +0 -0
  207. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/test_security.py +0 -0
  208. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/views/__init__.py +0 -0
  209. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/views/test_permissions.py +0 -0
  210. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/views/test_roles_list.py +0 -0
  211. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/views/test_user.py +0 -0
  212. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/views/test_user_edit.py +0 -0
  213. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/auth_manager/views/test_user_stats.py +0 -0
  214. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/db_manager/__init__.py +0 -0
  215. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/db_manager/test_fab_db_manager.py +0 -0
  216. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/decorators.py +0 -0
  217. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/plugins/__init__.py +0 -0
  218. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/plugins/conftest.py +0 -0
  219. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/plugins/test_plugin.py +0 -0
  220. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/utils.py +0 -0
  221. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/www/__init__.py +0 -0
  222. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/www/test_auth.py +0 -0
  223. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/www/test_utils.py +0 -0
  224. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/www/views/__init__.py +0 -0
  225. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/www/views/conftest.py +0 -0
  226. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/www/views/test_connection_form_fields.py +0 -0
  227. {apache_airflow_providers_fab-2.4.2 → apache_airflow_providers_fab-2.4.3rc1}/tests/unit/fab/www/views/test_views_custom_user_views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-fab
3
- Version: 2.4.2
3
+ Version: 2.4.3rc1
4
4
  Summary: Provider package apache-airflow-providers-fab for Apache Airflow
5
5
  Keywords: airflow-provider,fab,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -21,8 +21,8 @@ Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Topic :: System :: Monitoring
22
22
  License-File: 3rd-party-licenses/LICENSES-ui.txt
23
23
  License-File: NOTICE
24
- Requires-Dist: apache-airflow>=3.0.2
25
- Requires-Dist: apache-airflow-providers-common-compat>=1.2.1
24
+ Requires-Dist: apache-airflow>=3.0.2rc1
25
+ Requires-Dist: apache-airflow-providers-common-compat>=1.2.1rc1
26
26
  Requires-Dist: blinker>=1.6.2; python_version < '3.13'
27
27
  Requires-Dist: flask>=2.2.1,<2.3; python_version < '3.13'
28
28
  Requires-Dist: flask-appbuilder==4.6.3; python_version < '3.13'
@@ -33,10 +33,11 @@ Requires-Dist: connexion[flask]>=2.14.2,<3.0; python_version < '3.13'
33
33
  Requires-Dist: jmespath>=0.7.0; python_version < '3.13'
34
34
  Requires-Dist: werkzeug>=2.2,<4; python_version < '3.13'
35
35
  Requires-Dist: wtforms>=3.0,<4; python_version < '3.13'
36
+ Requires-Dist: flask_limiter>3,<4,!=3.13
36
37
  Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos" and ( python_version < '3.13')
37
38
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
38
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2/changelog.html
39
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2
39
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.4.3/changelog.html
40
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.4.3
40
41
  Project-URL: Mastodon, https://fosstodon.org/@airflow
41
42
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
42
43
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -68,7 +69,7 @@ Provides-Extra: kerberos
68
69
 
69
70
  Package ``apache-airflow-providers-fab``
70
71
 
71
- Release: ``2.4.2``
72
+ Release: ``2.4.3``
72
73
 
73
74
 
74
75
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
@@ -81,7 +82,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
81
82
  are in ``airflow.providers.fab`` python package.
82
83
 
83
84
  You can find package information and changelog for the provider
84
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2/>`_.
85
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.3/>`_.
85
86
 
86
87
  Installation
87
88
  ------------
@@ -110,6 +111,7 @@ PIP package Version required
110
111
  ``jmespath`` ``>=0.7.0; python_version < "3.13"``
111
112
  ``werkzeug`` ``>=2.2,<4; python_version < "3.13"``
112
113
  ``wtforms`` ``>=3.0,<4; python_version < "3.13"``
114
+ ``flask_limiter`` ``>3,!=3.13,<4``
113
115
  ========================================== ==========================================
114
116
 
115
117
  Cross provider package dependencies
@@ -131,6 +133,15 @@ Dependent package
131
133
  `apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
132
134
  ================================================================================================================== =================
133
135
 
136
+ Optional dependencies
137
+ ----------------------
138
+
139
+ ============ ============================================
140
+ Extra Dependencies
141
+ ============ ============================================
142
+ ``kerberos`` ``kerberos>=1.3.0; python_version < '3.13'``
143
+ ============ ============================================
144
+
134
145
  The changelog for the provider package can be found in the
135
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2/changelog.html>`_.
146
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.3/changelog.html>`_.
136
147
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-fab``
25
25
 
26
- Release: ``2.4.2``
26
+ Release: ``2.4.3``
27
27
 
28
28
 
29
29
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
@@ -36,7 +36,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
36
36
  are in ``airflow.providers.fab`` python package.
37
37
 
38
38
  You can find package information and changelog for the provider
39
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.3/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -65,6 +65,7 @@ PIP package Version required
65
65
  ``jmespath`` ``>=0.7.0; python_version < "3.13"``
66
66
  ``werkzeug`` ``>=2.2,<4; python_version < "3.13"``
67
67
  ``wtforms`` ``>=3.0,<4; python_version < "3.13"``
68
+ ``flask_limiter`` ``>3,!=3.13,<4``
68
69
  ========================================== ==========================================
69
70
 
70
71
  Cross provider package dependencies
@@ -86,5 +87,14 @@ Dependent package
86
87
  `apache-airflow-providers-common-compat <https://airflow.apache.org/docs/apache-airflow-providers-common-compat>`_ ``common.compat``
87
88
  ================================================================================================================== =================
88
89
 
90
+ Optional dependencies
91
+ ----------------------
92
+
93
+ ============ ============================================
94
+ Extra Dependencies
95
+ ============ ============================================
96
+ ``kerberos`` ``kerberos>=1.3.0; python_version < '3.13'``
97
+ ============ ============================================
98
+
89
99
  The changelog for the provider package can be found in the
90
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2/changelog.html>`_.
100
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.3/changelog.html>`_.
@@ -20,6 +20,28 @@
20
20
  Changelog
21
21
  ---------
22
22
 
23
+ 2.4.3
24
+ .....
25
+
26
+
27
+ Release Date: ``|PypiReleaseDate|``
28
+
29
+ Bug Fixes
30
+ ~~~~~~~~~
31
+
32
+ * ``Fix: Clean up FAB permissions when deleting DAGs (#54528)``
33
+
34
+ Misc
35
+ ~~~~
36
+
37
+ * ``Bump stylelint from 16.23.1 to 16.24.0 in /providers/fab/src/airflow/providers/fab/www in the fab-ui-package-updates group across 1 directory (#55382)``
38
+ * ``Remove SDK dependency from SerializedDAG (#55538)``
39
+ * ``Set flask_limiter>3,<4,!=3.13 (#55592)``
40
+ * ``Bump the fab-ui-package-updates group across 1 directory with 3 updates (#55302)``
41
+
42
+ .. Below changes are excluded from the changelog. Move them to
43
+ appropriate section above if needed. Do not delete the lines(!):
44
+
23
45
  2.4.2
24
46
  .....
25
47
 
@@ -84,7 +84,7 @@ apache-airflow-providers-fab package
84
84
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
85
85
 
86
86
 
87
- Release: 2.4.2
87
+ Release: 2.4.3
88
88
 
89
89
  Provider package
90
90
  ----------------
@@ -119,6 +119,7 @@ PIP package Version required
119
119
  ``jmespath`` ``>=0.7.0; python_version < "3.13"``
120
120
  ``werkzeug`` ``>=2.2,<4; python_version < "3.13"``
121
121
  ``wtforms`` ``>=3.0,<4; python_version < "3.13"``
122
+ ``flask_limiter`` ``>3,!=3.13,<4``
122
123
  ========================================== ==========================================
123
124
 
124
125
  Cross provider package dependencies
@@ -146,5 +147,5 @@ Downloading official packages
146
147
  You can download officially released packages and verify their checksums and signatures from the
147
148
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
148
149
 
149
- * `The apache-airflow-providers-fab 2.4.2 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.2.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.2.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.2.tar.gz.sha512>`__)
150
- * `The apache-airflow-providers-fab 2.4.2 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.2-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.2-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.2-py3-none-any.whl.sha512>`__)
150
+ * `The apache-airflow-providers-fab 2.4.3 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.3.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.3.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.3.tar.gz.sha512>`__)
151
+ * `The apache-airflow-providers-fab 2.4.3 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.3-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.3-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.4.3-py3-none-any.whl.sha512>`__)
@@ -28,13 +28,14 @@ description: |
28
28
  # For providers until we think it should be released.
29
29
  state: ready
30
30
 
31
- source-date-epoch: 1756876838
31
+ source-date-epoch: 1757950286
32
32
 
33
33
  # Note that those versions are maintained by release manager - do not update them manually
34
34
  # with the exception of case where other provider in sources has >= new provider version.
35
35
  # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
36
36
  # to be done in the same PR
37
37
  versions:
38
+ - 2.4.3
38
39
  - 2.4.2
39
40
  - 2.4.1
40
41
  - 2.4.0
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-fab"
28
- version = "2.4.2"
28
+ version = "2.4.3rc1"
29
29
  description = "Provider package apache-airflow-providers-fab for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -56,8 +56,8 @@ license-files = ["NOTICE", "*/LICENSE*"]
56
56
  # Make sure to run ``prek update-providers-dependencies --all-files``
57
57
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
58
58
  dependencies = [
59
- "apache-airflow>=3.0.2",
60
- "apache-airflow-providers-common-compat>=1.2.1",
59
+ "apache-airflow>=3.0.2rc1",
60
+ "apache-airflow-providers-common-compat>=1.2.1rc1",
61
61
  # Blinker use for signals in Flask, this is an optional dependency in Flask 2.2 and lower.
62
62
  # In Flask 2.3 it becomes a mandatory dependency, and flask signals are always available.
63
63
  "blinker>=1.6.2; python_version < '3.13'",
@@ -80,6 +80,10 @@ dependencies = [
80
80
  "jmespath>=0.7.0; python_version < '3.13'",
81
81
  "werkzeug>=2.2,<4; python_version < '3.13'",
82
82
  "wtforms>=3.0,<4; python_version < '3.13'",
83
+
84
+ # https://github.com/dpgaspar/Flask-AppBuilder/blob/release/4.6.3/setup.py#L54C8-L54C26
85
+ # with an exclusion to account for https://github.com/alisaifee/flask-limiter/issues/479
86
+ "flask_limiter>3,<4,!=3.13",
83
87
  ]
84
88
 
85
89
  # The optional dependencies should be modified in place in the generated file
@@ -126,8 +130,8 @@ apache-airflow-providers-common-sql = {workspace = true}
126
130
  apache-airflow-providers-standard = {workspace = true}
127
131
 
128
132
  [project.urls]
129
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2"
130
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.4.2/changelog.html"
133
+ "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.4.3"
134
+ "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.4.3/changelog.html"
131
135
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
132
136
  "Source Code" = "https://github.com/apache/airflow"
133
137
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "2.4.2"
32
+ __version__ = "2.4.3"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "3.0.2"
@@ -108,6 +108,14 @@ ARG_INCLUDE_DAGS = Arg(
108
108
  ("--include-dags",), help="If passed, DAG specific permissions will also be synced.", action="store_true"
109
109
  )
110
110
 
111
+ # permissions cleanup
112
+ ARG_DRY_RUN = Arg(
113
+ ("--dry-run",), help="Show what would be cleaned up without making any changes.", action="store_true"
114
+ )
115
+ ARG_DAG_ID_OPTIONAL = Arg(
116
+ ("-d", "--dag-id"), help="Optional: Clean up permissions for specific DAG ID only", type=str
117
+ )
118
+
111
119
  ################
112
120
  # # COMMANDS # #
113
121
  ################
@@ -253,6 +261,30 @@ SYNC_PERM_COMMAND = ActionCommand(
253
261
  args=(ARG_INCLUDE_DAGS, ARG_VERBOSE),
254
262
  )
255
263
 
264
+ PERMISSIONS_CLEANUP_COMMAND = ActionCommand(
265
+ name="permissions-cleanup",
266
+ help="Clean up DAG permissions in Flask-AppBuilder tables",
267
+ description=(
268
+ "Clean up DAG-specific permissions. By default, cleans up orphaned permissions "
269
+ "for deleted DAGs. Use --dag-id to clean up permissions for a specific DAG."
270
+ ),
271
+ func=lazy_load_command(
272
+ "airflow.providers.fab.auth_manager.cli_commands.permissions_command.permissions_cleanup"
273
+ ),
274
+ args=(ARG_DAG_ID_OPTIONAL, ARG_DRY_RUN, ARG_YES, ARG_VERBOSE),
275
+ epilog=(
276
+ "examples:\n"
277
+ "To see what orphaned permissions would be cleaned up:\n"
278
+ " $ airflow fab-auth-manager permissions-cleanup --dry-run\n"
279
+ "To clean up all orphaned permissions:\n"
280
+ " $ airflow fab-auth-manager permissions-cleanup\n"
281
+ "To clean up permissions for specific DAG:\n"
282
+ " $ airflow fab-auth-manager permissions-cleanup --dag-id my_dag\n"
283
+ "To clean up without confirmation:\n"
284
+ " $ airflow fab-auth-manager permissions-cleanup --yes"
285
+ ),
286
+ )
287
+
256
288
  DB_COMMANDS = (
257
289
  ActionCommand(
258
290
  name="migrate",
@@ -0,0 +1,196 @@
1
+ #
2
+ # Licensed to the Apache Software Foundation (ASF) under one
3
+ # or more contributor license agreements. See the NOTICE file
4
+ # distributed with this work for additional information
5
+ # regarding copyright ownership. The ASF licenses this file
6
+ # to you under the Apache License, Version 2.0 (the
7
+ # "License"); you may not use this file except in compliance
8
+ # with the License. You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing,
13
+ # software distributed under the License is distributed on an
14
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ # KIND, either express or implied. See the License for the
16
+ # specific language governing permissions and limitations
17
+ # under the License.
18
+ """Permissions cleanup command."""
19
+
20
+ from __future__ import annotations
21
+
22
+ import logging
23
+ from typing import TYPE_CHECKING
24
+
25
+ from airflow.utils import cli as cli_utils
26
+ from airflow.utils.providers_configuration_loader import providers_configuration_loaded
27
+ from airflow.utils.session import NEW_SESSION, provide_session
28
+ from airflow.utils.strings import to_boolean
29
+
30
+ if TYPE_CHECKING:
31
+ from sqlalchemy.orm import Session
32
+
33
+ log = logging.getLogger(__name__)
34
+
35
+
36
+ @provide_session
37
+ def cleanup_dag_permissions(dag_id: str, session: Session = NEW_SESSION) -> None:
38
+ """
39
+ Clean up DAG-specific permissions from Flask-AppBuilder tables.
40
+
41
+ When a DAG is deleted, we need to clean up the corresponding permissions
42
+ to prevent orphaned entries in the ab_view_menu table.
43
+
44
+ This addresses issue #50905: Deleted DAGs not removed from ab_view_menu table
45
+ and show up in permissions.
46
+
47
+ :param dag_id: Specific DAG ID to clean up.
48
+ :param session: Database session.
49
+ """
50
+ from sqlalchemy import delete, select
51
+
52
+ from airflow.providers.fab.auth_manager.models import Permission, Resource, assoc_permission_role
53
+ from airflow.security.permissions import RESOURCE_DAG_PREFIX, RESOURCE_DAG_RUN, RESOURCE_DETAILS_MAP
54
+
55
+ # Clean up specific DAG permissions
56
+ dag_resources = session.scalars(
57
+ select(Resource).filter(
58
+ Resource.name.in_(
59
+ [
60
+ f"{RESOURCE_DAG_PREFIX}{dag_id}", # DAG:dag_id
61
+ f"{RESOURCE_DETAILS_MAP[RESOURCE_DAG_RUN]['prefix']}{dag_id}", # DAG_RUN:dag_id
62
+ ]
63
+ )
64
+ )
65
+ ).all()
66
+ log.info("Cleaning up DAG-specific permissions for dag_id: %s", dag_id)
67
+
68
+ if not dag_resources:
69
+ return
70
+
71
+ dag_resource_ids = [resource.id for resource in dag_resources]
72
+
73
+ # Find all permissions associated with these resources
74
+ dag_permissions = session.scalars(
75
+ select(Permission).filter(Permission.resource_id.in_(dag_resource_ids))
76
+ ).all()
77
+
78
+ if not dag_permissions:
79
+ # Delete resources even if no permissions exist
80
+ session.execute(delete(Resource).where(Resource.id.in_(dag_resource_ids)))
81
+ return
82
+
83
+ dag_permission_ids = [permission.id for permission in dag_permissions]
84
+
85
+ # Delete permission-role associations first (foreign key constraint)
86
+ session.execute(
87
+ delete(assoc_permission_role).where(
88
+ assoc_permission_role.c.permission_view_id.in_(dag_permission_ids)
89
+ )
90
+ )
91
+
92
+ # Delete permissions
93
+ session.execute(delete(Permission).where(Permission.resource_id.in_(dag_resource_ids)))
94
+
95
+ # Delete resources (ab_view_menu entries)
96
+ session.execute(delete(Resource).where(Resource.id.in_(dag_resource_ids)))
97
+
98
+ log.info("Cleaned up %d DAG-specific permissions", len(dag_permissions))
99
+
100
+
101
+ @cli_utils.action_cli
102
+ @providers_configuration_loaded
103
+ def permissions_cleanup(args):
104
+ """Clean up DAG permissions in Flask-AppBuilder tables."""
105
+ from sqlalchemy import select
106
+
107
+ from airflow.models import DagModel
108
+ from airflow.providers.fab.auth_manager.cli_commands.utils import get_application_builder
109
+ from airflow.providers.fab.auth_manager.models import Resource
110
+ from airflow.security.permissions import (
111
+ RESOURCE_DAG_PREFIX,
112
+ RESOURCE_DAG_RUN,
113
+ RESOURCE_DETAILS_MAP,
114
+ )
115
+ from airflow.utils.session import create_session
116
+
117
+ with get_application_builder() as _:
118
+ with create_session() as session:
119
+ # Get all existing DAG IDs from DagModel
120
+ existing_dag_ids = {dag.dag_id for dag in session.scalars(select(DagModel)).all()}
121
+
122
+ # Get all DAG-related resources from FAB tables
123
+ dag_resources = session.scalars(
124
+ select(Resource).filter(
125
+ Resource.name.like(f"{RESOURCE_DAG_PREFIX}%")
126
+ | Resource.name.like(f"{RESOURCE_DETAILS_MAP[RESOURCE_DAG_RUN]['prefix']}%")
127
+ )
128
+ ).all()
129
+
130
+ orphaned_resources = []
131
+ orphaned_dag_ids = set()
132
+
133
+ for resource in dag_resources:
134
+ # Extract DAG ID from resource name
135
+ dag_id = None
136
+ if resource.name.startswith(RESOURCE_DAG_PREFIX):
137
+ dag_id = resource.name[len(RESOURCE_DAG_PREFIX) :]
138
+ elif resource.name.startswith(RESOURCE_DETAILS_MAP[RESOURCE_DAG_RUN]["prefix"]):
139
+ dag_id = resource.name[len(RESOURCE_DETAILS_MAP[RESOURCE_DAG_RUN]["prefix"]) :]
140
+
141
+ # Check if this DAG ID still exists
142
+ if dag_id and dag_id not in existing_dag_ids:
143
+ orphaned_resources.append(resource)
144
+ orphaned_dag_ids.add(dag_id)
145
+
146
+ # Filter by specific DAG ID if provided
147
+ if args.dag_id:
148
+ if args.dag_id in orphaned_dag_ids:
149
+ orphaned_dag_ids = {args.dag_id}
150
+ print(f"Filtering to clean up permissions for DAG: {args.dag_id}")
151
+ else:
152
+ print(
153
+ f"DAG '{args.dag_id}' not found in orphaned permissions or still exists in database."
154
+ )
155
+ return
156
+
157
+ if not orphaned_dag_ids:
158
+ if args.dag_id:
159
+ print(f"No orphaned permissions found for DAG: {args.dag_id}")
160
+ else:
161
+ print("No orphaned DAG permissions found.")
162
+ return
163
+
164
+ print(f"Found orphaned permissions for {len(orphaned_dag_ids)} deleted DAG(s):")
165
+ for dag_id in sorted(orphaned_dag_ids):
166
+ print(f" - {dag_id}")
167
+
168
+ if args.dry_run:
169
+ print("\nDry run mode: No changes will be made.")
170
+ print(f"Would clean up permissions for {len(orphaned_dag_ids)} orphaned DAG(s).")
171
+ return
172
+
173
+ # Perform cleanup if not in dry run mode
174
+ if not args.yes:
175
+ action = (
176
+ f"clean up permissions for {len(orphaned_dag_ids)} DAG(s)"
177
+ if not args.dag_id
178
+ else f"clean up permissions for DAG '{args.dag_id}'"
179
+ )
180
+ confirm = input(f"\nDo you want to {action}? [y/N]: ")
181
+ if not to_boolean(confirm):
182
+ print("Cleanup cancelled.")
183
+ return
184
+
185
+ # Perform the actual cleanup
186
+ cleanup_count = 0
187
+ for dag_id in orphaned_dag_ids:
188
+ try:
189
+ cleanup_dag_permissions(dag_id, session)
190
+ cleanup_count += 1
191
+ if args.verbose:
192
+ print(f"Cleaned up permissions for DAG: {dag_id}")
193
+ except Exception as e:
194
+ print(f"Failed to clean up permissions for DAG {dag_id}: {e}")
195
+
196
+ print(f"\nSuccessfully cleaned up permissions for {cleanup_count} DAG(s).")
@@ -60,6 +60,7 @@ from airflow.exceptions import AirflowConfigException, AirflowException
60
60
  from airflow.models import DagModel
61
61
  from airflow.providers.fab.auth_manager.cli_commands.definition import (
62
62
  DB_COMMANDS,
63
+ PERMISSIONS_CLEANUP_COMMAND,
63
64
  ROLES_COMMANDS,
64
65
  SYNC_PERM_COMMAND,
65
66
  USERS_COMMANDS,
@@ -211,6 +212,7 @@ class FabAuthManager(BaseAuthManager[User]):
211
212
  subcommands=ROLES_COMMANDS,
212
213
  ),
213
214
  SYNC_PERM_COMMAND, # not in a command group
215
+ PERMISSIONS_CLEANUP_COMMAND, # single command for permissions cleanup
214
216
  ]
215
217
  # If Airflow version is 3.0.0 or higher, add the fab-db command group
216
218
  if packaging.version.parse(
@@ -112,6 +112,7 @@ if TYPE_CHECKING:
112
112
  RESOURCE_ASSET_ALIAS,
113
113
  )
114
114
  from airflow.sdk import DAG
115
+ from airflow.serialization.serialized_objects import SerializedDAG
115
116
  else:
116
117
  from airflow.providers.common.compat.security.permissions import (
117
118
  RESOURCE_ASSET,
@@ -122,13 +123,13 @@ if AIRFLOW_V_3_1_PLUS:
122
123
  from airflow.models.dagbag import DBDagBag
123
124
  from airflow.utils.session import create_session
124
125
 
125
- def _iter_dags() -> Iterable[DAG]:
126
+ def _iter_dags() -> Iterable[DAG | SerializedDAG]:
126
127
  with create_session() as session:
127
128
  yield from DBDagBag().iter_all_latest_version_dags(session=session)
128
129
  else:
129
130
  from airflow.models.dagbag import DagBag
130
131
 
131
- def _iter_dags() -> Iterable[DAG]:
132
+ def _iter_dags() -> Iterable[DAG | SerializedDAG]:
132
133
  dagbag = DagBag(read_dags_from_db=True) # type: ignore[call-arg]
133
134
  dagbag.collect_dags_from_db() # type: ignore[attr-defined]
134
135
  return dagbag.dags.values()