apache-airflow-providers-fab 2.3.0rc1__tar.gz → 2.3.1__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 (224) hide show
  1. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/PKG-INFO +34 -33
  2. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/README.rst +17 -16
  3. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/auth-manager/api-authentication.rst +2 -2
  4. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/auth-manager/token.rst +1 -1
  5. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/auth-manager/webserver-authentication.rst +11 -2
  6. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/changelog.rst +31 -0
  7. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/index.rst +18 -16
  8. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/provider.yaml +5 -1
  9. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/pyproject.toml +18 -18
  10. {apache_airflow_providers_fab-2.3.0rc1/src/airflow/providers → apache_airflow_providers_fab-2.3.1/src/airflow}/__init__.py +1 -1
  11. {apache_airflow_providers_fab-2.3.0rc1/tests/unit → apache_airflow_providers_fab-2.3.1/src/airflow/providers}/__init__.py +1 -1
  12. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/__init__.py +1 -1
  13. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/fab_auth_manager.py +9 -3
  14. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/security_manager/override.py +5 -2
  15. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/auth.py +18 -35
  16. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/init_jinja_globals.py +5 -2
  17. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/package-lock.json +199 -219
  18. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/package.json +7 -7
  19. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/utils.py +7 -2
  20. {apache_airflow_providers_fab-2.3.0rc1/src/airflow → apache_airflow_providers_fab-2.3.1/tests/unit}/__init__.py +1 -1
  21. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_endpoints/test_role_and_permission_endpoint.py +1 -1
  22. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_endpoints/test_user_endpoint.py +1 -1
  23. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/schemas/test_role_and_permission_schema.py +3 -3
  24. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/schemas/test_user_schema.py +2 -2
  25. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/test_fab_auth_manager.py +31 -1
  26. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/test_security.py +2 -6
  27. apache_airflow_providers_fab-2.3.1/tests/unit/fab/db_manager/__init__.py +16 -0
  28. apache_airflow_providers_fab-2.3.1/tests/unit/fab/db_manager/test_fab_db_manager.py +101 -0
  29. apache_airflow_providers_fab-2.3.1/tests/unit/fab/plugins/__init__.py +16 -0
  30. apache_airflow_providers_fab-2.3.1/tests/unit/fab/plugins/conftest.py +77 -0
  31. apache_airflow_providers_fab-2.3.1/tests/unit/fab/plugins/test_plugin.py +173 -0
  32. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/utils.py +2 -2
  33. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/www/test_auth.py +3 -3
  34. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/www/views/test_views_custom_user_views.py +1 -1
  35. apache_airflow_providers_fab-2.3.1/www-hash.txt +1 -0
  36. apache_airflow_providers_fab-2.3.0rc1/www-hash.txt +0 -1
  37. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/3rd-party-licenses/LICENSES-ui.txt +0 -0
  38. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/NOTICE +0 -0
  39. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/api-ref/fab-public-api-ref.rst +0 -0
  40. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/api-ref/fab-token-api-ref.rst +0 -0
  41. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/auth-manager/access-control.rst +0 -0
  42. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/auth-manager/configuring-flask-app.rst +0 -0
  43. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/auth-manager/index.rst +0 -0
  44. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/auth-manager/security.rst +0 -0
  45. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/cli-ref.rst +0 -0
  46. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/commits.rst +0 -0
  47. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/conf.py +0 -0
  48. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/configurations-ref.rst +0 -0
  49. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/img/add-role.png +0 -0
  50. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/img/diagram_fab_auth_manager_airflow_architecture.md5sum +0 -0
  51. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/img/diagram_fab_auth_manager_airflow_architecture.png +0 -0
  52. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/img/diagram_fab_auth_manager_airflow_architecture.py +0 -0
  53. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/img/new-role.png +0 -0
  54. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/installing-providers-from-sources.rst +0 -0
  55. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/migrations-ref.rst +0 -0
  56. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/security.rst +0 -0
  57. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/docs/upgrading.rst +0 -0
  58. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/3rd-party-licenses/LICENSES-ui.txt +0 -0
  59. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/LICENSE +0 -0
  60. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/alembic.ini +0 -0
  61. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/__init__.py +0 -0
  62. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api/__init__.py +0 -0
  63. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api/auth/__init__.py +0 -0
  64. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api/auth/backend/__init__.py +0 -0
  65. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api/auth/backend/basic_auth.py +0 -0
  66. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api/auth/backend/kerberos_auth.py +0 -0
  67. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api/auth/backend/session.py +0 -0
  68. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_endpoints/__init__.py +0 -0
  69. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py +0 -0
  70. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py +0 -0
  71. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/__init__.py +0 -0
  72. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/__init__.py +0 -0
  73. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/login.py +0 -0
  74. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/__init__.py +0 -0
  75. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/v2-fab-auth-manager-generated.yaml +0 -0
  76. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
  77. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py +0 -0
  78. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
  79. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/api_fastapi/services/login.py +0 -0
  80. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/cli_commands/__init__.py +0 -0
  81. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/cli_commands/db_command.py +0 -0
  82. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/cli_commands/definition.py +0 -0
  83. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/cli_commands/role_command.py +0 -0
  84. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/cli_commands/sync_perm_command.py +0 -0
  85. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/cli_commands/user_command.py +0 -0
  86. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/cli_commands/utils.py +0 -0
  87. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/models/__init__.py +0 -0
  88. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/models/anonymous_user.py +0 -0
  89. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/models/db.py +0 -0
  90. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/openapi/__init__.py +0 -0
  91. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/openapi/v1-flask-api.yaml +0 -0
  92. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/schemas/__init__.py +0 -0
  93. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/schemas/role_and_permission_schema.py +0 -0
  94. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/schemas/user_schema.py +0 -0
  95. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/security_manager/__init__.py +0 -0
  96. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/security_manager/constants.py +0 -0
  97. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/views/__init__.py +0 -0
  98. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/views/permissions.py +0 -0
  99. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/views/roles_list.py +0 -0
  100. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/views/user.py +0 -0
  101. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/views/user_edit.py +0 -0
  102. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/auth_manager/views/user_stats.py +0 -0
  103. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/get_provider_info.py +0 -0
  104. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/migrations/README +0 -0
  105. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/migrations/__init__.py +0 -0
  106. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/migrations/env.py +0 -0
  107. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/migrations/script.py.mako +0 -0
  108. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/migrations/versions/0001_1_4_0_placeholder_migration.py +0 -0
  109. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/migrations/versions/__init__.py +0 -0
  110. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/version_compat.py +0 -0
  111. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/__init__.py +0 -0
  112. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/airflow_flask_app.py +0 -0
  113. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/api_connexion/__init__.py +0 -0
  114. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/api_connexion/exceptions.py +0 -0
  115. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/api_connexion/parameters.py +0 -0
  116. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/api_connexion/security.py +0 -0
  117. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/api_connexion/types.py +0 -0
  118. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/app.py +0 -0
  119. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/constants.py +0 -0
  120. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/__init__.py +0 -0
  121. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/init_appbuilder.py +0 -0
  122. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/init_manifest_files.py +0 -0
  123. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/init_security.py +0 -0
  124. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/init_session.py +0 -0
  125. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/init_views.py +0 -0
  126. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/extensions/init_wsgi_middlewares.py +0 -0
  127. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/security/__init__.py +0 -0
  128. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/security/permissions.py +0 -0
  129. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/security_appless.py +0 -0
  130. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/security_manager.py +0 -0
  131. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/session.py +0 -0
  132. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/css/bootstrap-theme.css +0 -0
  133. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/css/flash.css +0 -0
  134. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/css/loading-dots.css +0 -0
  135. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/css/main.css +0 -0
  136. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/css/material-icons.css +0 -0
  137. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/48f0ea180c40270a5b05.png +0 -0
  138. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/649c0b07771e68fafdeb.png +0 -0
  139. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/743.27a753a06671118f1c5c.js +0 -0
  140. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/743.27a753a06671118f1c5c.js.LICENSE.txt +0 -0
  141. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.56d4475fdae7883d3454.css +0 -0
  142. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.56d4475fdae7883d3454.js +0 -0
  143. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/f7490d556a6c42e49ba4.png +0 -0
  144. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/flash.0951d47c62bc8906be65.css +0 -0
  145. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/flash.0951d47c62bc8906be65.js +0 -0
  146. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.css +0 -0
  147. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js +0 -0
  148. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js.LICENSE.txt +0 -0
  149. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/loadingDots.deaad0ce0e7691ed6251.css +0 -0
  150. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/loadingDots.deaad0ce0e7691ed6251.js +0 -0
  151. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/main.810554d06c3e30f2484e.css +0 -0
  152. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/main.810554d06c3e30f2484e.js +0 -0
  153. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/main.810554d06c3e30f2484e.js.LICENSE.txt +0 -0
  154. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/manifest.json +0 -0
  155. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/materialIcons.b0c6cc32cdacff89f7c2.css +0 -0
  156. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/materialIcons.b0c6cc32cdacff89f7c2.js +0 -0
  157. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/moment.518a43bcfaf149ae2836.js +0 -0
  158. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/oss-licenses.json +0 -0
  159. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/dist/runtime.4a925577de9ab84d8e00.js +0 -0
  160. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/js/datetime_utils.js +0 -0
  161. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/js/main.js +0 -0
  162. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/pin_100.png +0 -0
  163. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/pin_32.png +0 -0
  164. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/sort_asc.png +0 -0
  165. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/sort_both.png +0 -0
  166. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/static/sort_desc.png +0 -0
  167. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/airflow/_messages.html +0 -0
  168. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/airflow/error.html +0 -0
  169. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/airflow/main.html +0 -0
  170. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/airflow/traceback.html +0 -0
  171. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/appbuilder/flash.html +0 -0
  172. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/appbuilder/index.html +0 -0
  173. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/appbuilder/navbar.html +0 -0
  174. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/appbuilder/navbar_menu.html +0 -0
  175. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/templates/appbuilder/navbar_right.html +0 -0
  176. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/views.py +0 -0
  177. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/src/airflow/providers/fab/www/webpack.config.js +0 -0
  178. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/conftest.py +0 -0
  179. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/__init__.py +0 -0
  180. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/__init__.py +0 -0
  181. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api/__init__.py +0 -0
  182. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api/auth/__init__.py +0 -0
  183. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api/auth/backend/__init__.py +0 -0
  184. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api/auth/backend/test_basic_auth.py +0 -0
  185. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api/auth/backend/test_kerberos_auth.py +0 -0
  186. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api/auth/backend/test_session.py +0 -0
  187. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_endpoints/__init__.py +0 -0
  188. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_endpoints/api_connexion_utils.py +0 -0
  189. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_endpoints/remote_user_api_auth_backend.py +0 -0
  190. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_endpoints/test_auth.py +0 -0
  191. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_fastapi/__init__.py +0 -0
  192. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_fastapi/conftest.py +0 -0
  193. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
  194. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_fastapi/routes/test_login.py +0 -0
  195. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
  196. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/api_fastapi/services/test_login.py +0 -0
  197. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/cli_commands/__init__.py +0 -0
  198. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/cli_commands/test_db_command.py +0 -0
  199. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/cli_commands/test_definition.py +0 -0
  200. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/cli_commands/test_role_command.py +0 -0
  201. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/cli_commands/test_sync_perm_command.py +0 -0
  202. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/cli_commands/test_user_command.py +0 -0
  203. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/cli_commands/test_utils.py +0 -0
  204. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/conftest.py +0 -0
  205. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/models/__init__.py +0 -0
  206. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/models/test_anonymous_user.py +0 -0
  207. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/models/test_db.py +0 -0
  208. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/schemas/__init__.py +0 -0
  209. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/security_manager/__init__.py +0 -0
  210. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/security_manager/test_constants.py +0 -0
  211. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/security_manager/test_override.py +0 -0
  212. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/test_models.py +0 -0
  213. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/views/__init__.py +0 -0
  214. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/views/test_permissions.py +0 -0
  215. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/views/test_roles_list.py +0 -0
  216. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/views/test_user.py +0 -0
  217. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/views/test_user_edit.py +0 -0
  218. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/auth_manager/views/test_user_stats.py +0 -0
  219. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/decorators.py +0 -0
  220. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/www/__init__.py +0 -0
  221. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/www/test_utils.py +0 -0
  222. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/www/views/__init__.py +0 -0
  223. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/www/views/conftest.py +0 -0
  224. {apache_airflow_providers_fab-2.3.0rc1 → apache_airflow_providers_fab-2.3.1}/tests/unit/fab/www/views/test_connection_form_fields.py +0 -0
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-fab
3
- Version: 2.3.0rc1
3
+ Version: 2.3.1
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>
7
7
  Maintainer-email: Apache Software Foundation <dev@airflow.apache.org>
8
- Requires-Python: ~=3.10
8
+ Requires-Python: >=3.10,!=3.13
9
9
  Description-Content-Type: text/x-rst
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
@@ -21,22 +21,22 @@ 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.2rc1
25
- Requires-Dist: apache-airflow-providers-common-compat>=1.2.1rc1
26
- Requires-Dist: blinker>=1.6.2
27
- Requires-Dist: flask>=2.2.1,<2.3
28
- Requires-Dist: flask-appbuilder==4.6.3
29
- Requires-Dist: flask-login>=0.6.2
30
- Requires-Dist: flask-session>=0.4.0,<0.6
31
- Requires-Dist: flask-wtf>=1.1.0
32
- Requires-Dist: connexion[flask]>=2.14.2,<3.0
33
- Requires-Dist: jmespath>=0.7.0
34
- Requires-Dist: werkzeug>=2.2,<4
35
- Requires-Dist: wtforms>=3.0,<4
36
- Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos"
24
+ Requires-Dist: apache-airflow>=3.0.2
25
+ Requires-Dist: apache-airflow-providers-common-compat>=1.2.1
26
+ Requires-Dist: blinker>=1.6.2; python_version < '3.13'
27
+ Requires-Dist: flask>=2.2.1,<2.3; python_version < '3.13'
28
+ Requires-Dist: flask-appbuilder==4.6.3; python_version < '3.13'
29
+ Requires-Dist: flask-login>=0.6.2; python_version < '3.13'
30
+ Requires-Dist: flask-session>=0.4.0,<0.6; python_version < '3.13'
31
+ Requires-Dist: flask-wtf>=1.1.0; python_version < '3.13'
32
+ Requires-Dist: connexion[flask]>=2.14.2,<3.0; python_version < '3.13'
33
+ Requires-Dist: jmespath>=0.7.0; python_version < '3.13'
34
+ Requires-Dist: werkzeug>=2.2,<4; python_version < '3.13'
35
+ Requires-Dist: wtforms>=3.0,<4; python_version < '3.13'
36
+ Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos" and ( python_version < '3.13')
37
37
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
38
- Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.3.0/changelog.html
39
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.3.0
38
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1/changelog.html
39
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1
40
40
  Project-URL: Mastodon, https://fosstodon.org/@airflow
41
41
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
42
42
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -68,8 +68,9 @@ Provides-Extra: kerberos
68
68
 
69
69
  Package ``apache-airflow-providers-fab``
70
70
 
71
- Release: ``2.3.0``
71
+ Release: ``2.3.1``
72
72
 
73
+ Release Date: ``|PypiReleaseDate|``
73
74
 
74
75
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
75
76
 
@@ -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.3.0/>`_.
85
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1/>`_.
85
86
 
86
87
  Installation
87
88
  ------------
@@ -95,22 +96,22 @@ The package supports the following python versions: 3.10,3.11,3.12
95
96
  Requirements
96
97
  ------------
97
98
 
98
- ========================================== ==================
99
+ ========================================== ==========================================
99
100
  PIP package Version required
100
- ========================================== ==================
101
+ ========================================== ==========================================
101
102
  ``apache-airflow`` ``>=3.0.2``
102
103
  ``apache-airflow-providers-common-compat`` ``>=1.2.1``
103
- ``blinker`` ``>=1.6.2``
104
- ``flask`` ``>=2.2.1,<2.3``
105
- ``flask-appbuilder`` ``==4.6.3``
106
- ``flask-login`` ``>=0.6.2``
107
- ``flask-session`` ``>=0.4.0,<0.6``
108
- ``flask-wtf`` ``>=1.1.0``
109
- ``connexion[flask]`` ``>=2.14.2,<3.0``
110
- ``jmespath`` ``>=0.7.0``
111
- ``werkzeug`` ``>=2.2,<4``
112
- ``wtforms`` ``>=3.0,<4``
113
- ========================================== ==================
104
+ ``blinker`` ``>=1.6.2; python_version < "3.13"``
105
+ ``flask`` ``>=2.2.1,<2.3; python_version < "3.13"``
106
+ ``flask-appbuilder`` ``==4.6.3; python_version < "3.13"``
107
+ ``flask-login`` ``>=0.6.2; python_version < "3.13"``
108
+ ``flask-session`` ``>=0.4.0,<0.6; python_version < "3.13"``
109
+ ``flask-wtf`` ``>=1.1.0; python_version < "3.13"``
110
+ ``connexion[flask]`` ``>=2.14.2,<3.0; python_version < "3.13"``
111
+ ``jmespath`` ``>=0.7.0; python_version < "3.13"``
112
+ ``werkzeug`` ``>=2.2,<4; python_version < "3.13"``
113
+ ``wtforms`` ``>=3.0,<4; python_version < "3.13"``
114
+ ========================================== ==========================================
114
115
 
115
116
  Cross provider package dependencies
116
117
  -----------------------------------
@@ -132,5 +133,5 @@ Dependent package
132
133
  ================================================================================================================== =================
133
134
 
134
135
  The changelog for the provider package can be found in the
135
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.0/changelog.html>`_.
136
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1/changelog.html>`_.
136
137
 
@@ -23,8 +23,9 @@
23
23
 
24
24
  Package ``apache-airflow-providers-fab``
25
25
 
26
- Release: ``2.3.0``
26
+ Release: ``2.3.1``
27
27
 
28
+ Release Date: ``|PypiReleaseDate|``
28
29
 
29
30
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
30
31
 
@@ -36,7 +37,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
36
37
  are in ``airflow.providers.fab`` python package.
37
38
 
38
39
  You can find package information and changelog for the provider
39
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.0/>`_.
40
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1/>`_.
40
41
 
41
42
  Installation
42
43
  ------------
@@ -50,22 +51,22 @@ The package supports the following python versions: 3.10,3.11,3.12
50
51
  Requirements
51
52
  ------------
52
53
 
53
- ========================================== ==================
54
+ ========================================== ==========================================
54
55
  PIP package Version required
55
- ========================================== ==================
56
+ ========================================== ==========================================
56
57
  ``apache-airflow`` ``>=3.0.2``
57
58
  ``apache-airflow-providers-common-compat`` ``>=1.2.1``
58
- ``blinker`` ``>=1.6.2``
59
- ``flask`` ``>=2.2.1,<2.3``
60
- ``flask-appbuilder`` ``==4.6.3``
61
- ``flask-login`` ``>=0.6.2``
62
- ``flask-session`` ``>=0.4.0,<0.6``
63
- ``flask-wtf`` ``>=1.1.0``
64
- ``connexion[flask]`` ``>=2.14.2,<3.0``
65
- ``jmespath`` ``>=0.7.0``
66
- ``werkzeug`` ``>=2.2,<4``
67
- ``wtforms`` ``>=3.0,<4``
68
- ========================================== ==================
59
+ ``blinker`` ``>=1.6.2; python_version < "3.13"``
60
+ ``flask`` ``>=2.2.1,<2.3; python_version < "3.13"``
61
+ ``flask-appbuilder`` ``==4.6.3; python_version < "3.13"``
62
+ ``flask-login`` ``>=0.6.2; python_version < "3.13"``
63
+ ``flask-session`` ``>=0.4.0,<0.6; python_version < "3.13"``
64
+ ``flask-wtf`` ``>=1.1.0; python_version < "3.13"``
65
+ ``connexion[flask]`` ``>=2.14.2,<3.0; python_version < "3.13"``
66
+ ``jmespath`` ``>=0.7.0; python_version < "3.13"``
67
+ ``werkzeug`` ``>=2.2,<4; python_version < "3.13"``
68
+ ``wtforms`` ``>=3.0,<4; python_version < "3.13"``
69
+ ========================================== ==========================================
69
70
 
70
71
  Cross provider package dependencies
71
72
  -----------------------------------
@@ -87,4 +88,4 @@ Dependent package
87
88
  ================================================================================================================== =================
88
89
 
89
90
  The changelog for the provider package can be found in the
90
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.0/changelog.html>`_.
91
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1/changelog.html>`_.
@@ -66,7 +66,7 @@ work. This means that your user name should be ``user_name@REALM``.
66
66
  .. code-block:: bash
67
67
 
68
68
  kinit user_name@REALM
69
- ENDPOINT_URL="http://localhost:8080/"
69
+ ENDPOINT_URL="http://localhost:8080"
70
70
  curl -X GET \
71
71
  --negotiate \ # enables Negotiate (SPNEGO) authentication
72
72
  --service airflow \ # matches the `airflow` service name in the `airflow/fully.qualified.domainname@REALM` principal
@@ -106,7 +106,7 @@ Here is a sample curl command you can use to validate the setup:
106
106
 
107
107
  .. code-block:: bash
108
108
 
109
- ENDPOINT_URL="http://localhost:8080/"
109
+ ENDPOINT_URL="http://localhost:8080"
110
110
  curl -X GET \
111
111
  --user "username:password" \
112
112
  "${ENDPOINT_URL}/api/v1/pools"
@@ -30,7 +30,7 @@ Example
30
30
 
31
31
  .. code-block:: bash
32
32
 
33
- ENDPOINT_URL="http://localhost:8080/"
33
+ ENDPOINT_URL="http://localhost:8080"
34
34
  curl -X 'POST' \
35
35
  "${ENDPOINT_URL}/auth/token" \
36
36
  -H 'Content-Type: application/json' \
@@ -18,6 +18,15 @@
18
18
  FAB auth manager authentication
19
19
  ===============================
20
20
 
21
+ .. note::
22
+
23
+ While this documentation refers to authentication using the ``apache-airflow-providers-fab`` package, please note:
24
+
25
+ - The **FAB auth provider** is actively maintained and compatible with the latest versions of Airflow.
26
+ - The legacy ``webserver_config.py`` file referenced in older docs is **no longer used** in recent versions of Airflow. Instead, authentication is handled via the new ``auth_manager`` framework configured in ``airflow.cfg``.
27
+
28
+ For more, see the :doc:`token`.
29
+
21
30
  By default, FAB auth manager requires users to specify a password prior to login. You can use the
22
31
  following CLI commands to create an account:
23
32
 
@@ -213,7 +222,7 @@ webserver_config.py itself if you wish.
213
222
  # If you ever want to support other providers, see how it is done here:
214
223
  # https://github.com/dpgaspar/Flask-AppBuilder/blob/master/flask_appbuilder/security/manager.py#L550
215
224
  def get_oauth_user_info(self, provider: str, resp: Any) -> dict[str, Union[str, list[str]]]:
216
- # Creates the user info payload from Github.
225
+ # Creates the user info payload from GitHub.
217
226
  # The user previously allowed your app to act on their behalf,
218
227
  # so now we can query the user and teams endpoints for their data.
219
228
  # Username and team membership are added to the payload and returned to FAB.
@@ -224,7 +233,7 @@ webserver_config.py itself if you wish.
224
233
  team_data = remote_app.get("user/teams")
225
234
  teams = team_parser(team_data.json())
226
235
  roles = map_roles(teams)
227
- log.debug(f"User info from Github: {user_data}\nTeam info from Github: {teams}")
236
+ log.debug(f"User info from GitHub: {user_data}\nTeam info from GitHub: {teams}")
228
237
  return {"username": "github_" + user_data.get("login"), "role_keys": roles}
229
238
 
230
239
  Example using team based Authorization with KeyCloak
@@ -20,6 +20,37 @@
20
20
  Changelog
21
21
  ---------
22
22
 
23
+ 2.3.1
24
+ .....
25
+
26
+ Bug Fixes
27
+ ~~~~~~~~~
28
+
29
+ * ``Remove 'MENU' from 'ResourceMethod' in auth manager (#52731)``
30
+
31
+ Misc
32
+ ~~~~
33
+
34
+ * ``Fix FAB provider in unreachable code (#53436)``
35
+ * ``Add Python 3.13 support for Airflow. (#46891)``
36
+ * ``Cleanup mypy ignore for fab provider in init_jinja_globals (#53328)``
37
+ * ``Remove type ignore across codebase after mypy upgrade (#53243)``
38
+ * ``Remove upper-binding for "python-requires" (#52980)``
39
+ * ``Remove unused batch methods from auth manager (#52883)``
40
+ * ``Temporarily switch to use >=,< pattern instead of '~=' (#52967)``
41
+ * ``Bump the fab-ui-package-updates group across 1 directory with 7 updates (#52807)``
42
+
43
+ Doc-only
44
+ ~~~~~~~~
45
+
46
+ * ``Remove extra slash from endpoint URL (#53755)``
47
+ * ``Fix spelling of GitHub brand name (#53735)``
48
+ * ``Clarify FAB auth provider versioning and webserver_config.py deprecation for Airflow 3.x (#53606)``
49
+
50
+ .. Below changes are excluded from the changelog. Move them to
51
+ appropriate section above if needed. Do not delete the lines(!):
52
+ * ``Cleanup mypy ignore in fab provider where possible (#53282)``
53
+
23
54
  2.3.0
24
55
  .....
25
56
 
@@ -84,7 +84,9 @@ apache-airflow-providers-fab package
84
84
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
85
85
 
86
86
 
87
- Release: 2.3.0
87
+ Release: 2.3.1
88
+
89
+ Release Date: ``|PypiReleaseDate|``
88
90
 
89
91
  Provider package
90
92
  ----------------
@@ -104,22 +106,22 @@ Requirements
104
106
 
105
107
  The minimum Apache Airflow version supported by this provider distribution is ``3.0.2``.
106
108
 
107
- ========================================== ==================
109
+ ========================================== ==========================================
108
110
  PIP package Version required
109
- ========================================== ==================
111
+ ========================================== ==========================================
110
112
  ``apache-airflow`` ``>=3.0.2``
111
113
  ``apache-airflow-providers-common-compat`` ``>=1.2.1``
112
- ``blinker`` ``>=1.6.2``
113
- ``flask`` ``>=2.2.1,<2.3``
114
- ``flask-appbuilder`` ``==4.6.3``
115
- ``flask-login`` ``>=0.6.2``
116
- ``flask-session`` ``>=0.4.0,<0.6``
117
- ``flask-wtf`` ``>=1.1.0``
118
- ``connexion[flask]`` ``>=2.14.2,<3.0``
119
- ``jmespath`` ``>=0.7.0``
120
- ``werkzeug`` ``>=2.2,<4``
121
- ``wtforms`` ``>=3.0,<4``
122
- ========================================== ==================
114
+ ``blinker`` ``>=1.6.2; python_version < "3.13"``
115
+ ``flask`` ``>=2.2.1,<2.3; python_version < "3.13"``
116
+ ``flask-appbuilder`` ``==4.6.3; python_version < "3.13"``
117
+ ``flask-login`` ``>=0.6.2; python_version < "3.13"``
118
+ ``flask-session`` ``>=0.4.0,<0.6; python_version < "3.13"``
119
+ ``flask-wtf`` ``>=1.1.0; python_version < "3.13"``
120
+ ``connexion[flask]`` ``>=2.14.2,<3.0; python_version < "3.13"``
121
+ ``jmespath`` ``>=0.7.0; python_version < "3.13"``
122
+ ``werkzeug`` ``>=2.2,<4; python_version < "3.13"``
123
+ ``wtforms`` ``>=3.0,<4; python_version < "3.13"``
124
+ ========================================== ==========================================
123
125
 
124
126
  Cross provider package dependencies
125
127
  -----------------------------------
@@ -146,5 +148,5 @@ Downloading official packages
146
148
  You can download officially released packages and verify their checksums and signatures from the
147
149
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
148
150
 
149
- * `The apache-airflow-providers-fab 2.3.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.0.tar.gz.sha512>`__)
150
- * `The apache-airflow-providers-fab 2.3.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.0-py3-none-any.whl.sha512>`__)
151
+ * `The apache-airflow-providers-fab 2.3.1 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.1.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.1.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.1.tar.gz.sha512>`__)
152
+ * `The apache-airflow-providers-fab 2.3.1 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.1-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.1-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.3.1-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: 1751473430
31
+ source-date-epoch: 1753690707
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.3.1
38
39
  - 2.3.0
39
40
  - 2.2.1
40
41
  - 2.2.0
@@ -59,6 +60,9 @@ versions:
59
60
  - 1.0.1
60
61
  - 1.0.0
61
62
 
63
+ excluded-python-versions:
64
+ - "3.13"
65
+
62
66
  config:
63
67
  fab:
64
68
  description: This section contains configs specific to FAB provider.
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-fab"
28
- version = "2.3.0rc1"
28
+ version = "2.3.1"
29
29
  description = "Provider package apache-airflow-providers-fab for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -49,44 +49,44 @@ classifiers = [
49
49
  "Programming Language :: Python :: 3.12",
50
50
  "Topic :: System :: Monitoring",
51
51
  ]
52
- requires-python = "~=3.10"
52
+ requires-python = ">=3.10,!=3.13"
53
53
  license-files = ["NOTICE", "*/LICENSE*"]
54
54
  # The dependencies should be modified in place in the generated file.
55
55
  # Any change in the dependencies is preserved when the file is regenerated
56
56
  # Make sure to run ``breeze static-checks --type 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.2rc1",
60
- "apache-airflow-providers-common-compat>=1.2.1rc1",
59
+ "apache-airflow>=3.0.2",
60
+ "apache-airflow-providers-common-compat>=1.2.1",
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
- "blinker>=1.6.2",
63
+ "blinker>=1.6.2; python_version < '3.13'",
64
64
  # Flask 2.3 is scheduled to introduce a number of deprecation removals - some of them might be breaking
65
65
  # for our dependencies - notably `_app_ctx_stack` and `_request_ctx_stack` removals.
66
66
  # We should remove the limitation after 2.3 is released and our dependencies are updated to handle it
67
- "flask>=2.2.1,<2.3",
67
+ "flask>=2.2.1,<2.3; python_version < '3.13'",
68
68
  # We are tightly coupled with FAB version as we vendored-in part of FAB code related to security manager
69
69
  # This is done as part of preparation to removing FAB as dependency, but we are not ready for it yet
70
70
  # Every time we update FAB version here, please make sure that you review the classes and models in
71
71
  # `airflow/providers/fab/auth_manager/security_manager/override.py` with their upstream counterparts.
72
72
  # In particular, make sure any breaking changes, for example any new methods, are accounted for.
73
- "flask-appbuilder==4.6.3",
74
- "flask-login>=0.6.2",
73
+ "flask-appbuilder==4.6.3; python_version < '3.13'",
74
+ "flask-login>=0.6.2; python_version < '3.13'",
75
75
  # Flask-Session 0.6 add new arguments into the SqlAlchemySessionInterface constructor as well as
76
76
  # all parameters now are mandatory which make AirflowDatabaseSessionInterface incompatible with this version.
77
- "flask-session>=0.4.0,<0.6",
78
- "flask-wtf>=1.1.0",
79
- "connexion[flask]>=2.14.2,<3.0",
80
- "jmespath>=0.7.0",
81
- "werkzeug>=2.2,<4",
82
- "wtforms>=3.0,<4",
77
+ "flask-session>=0.4.0,<0.6; python_version < '3.13'",
78
+ "flask-wtf>=1.1.0; python_version < '3.13'",
79
+ "connexion[flask]>=2.14.2,<3.0; python_version < '3.13'",
80
+ "jmespath>=0.7.0; python_version < '3.13'",
81
+ "werkzeug>=2.2,<4; python_version < '3.13'",
82
+ "wtforms>=3.0,<4; python_version < '3.13'",
83
83
  ]
84
84
 
85
85
  # The optional dependencies should be modified in place in the generated file
86
86
  # Any change in the dependencies is preserved when the file is regenerated
87
87
  [project.optional-dependencies]
88
88
  "kerberos" = [
89
- "kerberos>=1.3.0",
89
+ "kerberos>=1.3.0; python_version < '3.13'",
90
90
  ]
91
91
 
92
92
  [dependency-groups]
@@ -96,7 +96,7 @@ dev = [
96
96
  "apache-airflow-devel-common",
97
97
  "apache-airflow-providers-common-compat",
98
98
  # Additional devel dependencies (do not remove this line and add extra development dependencies)
99
- "kerberos>=1.3.0",
99
+ "kerberos>=1.3.0; python_version < '3.13'",
100
100
  "requests_kerberos>=0.14.0",
101
101
  ]
102
102
 
@@ -126,8 +126,8 @@ apache-airflow-providers-common-sql = {workspace = true}
126
126
  apache-airflow-providers-standard = {workspace = true}
127
127
 
128
128
  [project.urls]
129
- "Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.3.0"
130
- "Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/2.3.0/changelog.html"
129
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1"
130
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.1/changelog.html"
131
131
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
132
132
  "Source Code" = "https://github.com/apache/airflow"
133
133
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -14,4 +14,4 @@
14
14
  # KIND, either express or implied. See the License for the
15
15
  # specific language governing permissions and limitations
16
16
  # under the License.
17
- __path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore
17
+ __path__ = __import__("pkgutil").extend_path(__path__, __name__)
@@ -14,4 +14,4 @@
14
14
  # KIND, either express or implied. See the License for the
15
15
  # specific language governing permissions and limitations
16
16
  # under the License.
17
- __path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore
17
+ __path__ = __import__("pkgutil").extend_path(__path__, __name__)
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "2.3.0"
32
+ __version__ = "2.3.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "3.0.2"
@@ -34,6 +34,12 @@ from starlette.middleware.wsgi import WSGIMiddleware
34
34
  from airflow import __version__ as airflow_version
35
35
  from airflow.api_fastapi.app import AUTH_MANAGER_FASTAPI_APP_PREFIX
36
36
  from airflow.api_fastapi.auth.managers.base_auth_manager import BaseAuthManager
37
+
38
+ try:
39
+ from airflow.api_fastapi.auth.managers.base_auth_manager import ExtendedResourceMethod
40
+ except ImportError:
41
+ from airflow.api_fastapi.auth.managers.base_auth_manager import ResourceMethod as ExtendedResourceMethod
42
+
37
43
  from airflow.api_fastapi.auth.managers.models.resource_details import (
38
44
  AccessView,
39
45
  BackfillDetails,
@@ -382,7 +388,7 @@ class FabAuthManager(BaseAuthManager[User]):
382
388
 
383
389
  def is_authorized_view(self, *, access_view: AccessView, user: User) -> bool:
384
390
  # "Docs" are only links in the menu, there is no page associated
385
- method: ResourceMethod = "MENU" if access_view == AccessView.DOCS else "GET"
391
+ method: ExtendedResourceMethod = "MENU" if access_view == AccessView.DOCS else "GET"
386
392
  return self._is_authorized(
387
393
  method=method,
388
394
  resource_type=_MAP_ACCESS_VIEW_TO_FAB_RESOURCE_TYPE[access_view],
@@ -523,7 +529,7 @@ class FabAuthManager(BaseAuthManager[User]):
523
529
  def _is_authorized(
524
530
  self,
525
531
  *,
526
- method: ResourceMethod,
532
+ method: ExtendedResourceMethod,
527
533
  resource_type: str,
528
534
  user: User,
529
535
  ) -> bool:
@@ -594,7 +600,7 @@ class FabAuthManager(BaseAuthManager[User]):
594
600
  return len(authorized_dags) > 0
595
601
 
596
602
  @staticmethod
597
- def _get_fab_action(method: ResourceMethod) -> str:
603
+ def _get_fab_action(method: ExtendedResourceMethod) -> str:
598
604
  """
599
605
  Convert the method to a FAB action.
600
606
 
@@ -1551,7 +1551,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
1551
1551
  ---------------
1552
1552
  """
1553
1553
 
1554
- def get_resource(self, name: str) -> Resource:
1554
+ def get_resource(self, name: str) -> Resource | None:
1555
1555
  """
1556
1556
  Return a resource record by name, if it exists.
1557
1557
 
@@ -1559,7 +1559,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
1559
1559
  """
1560
1560
  return self.get_session.query(self.resource_model).filter_by(name=name).one_or_none()
1561
1561
 
1562
- def create_resource(self, name) -> Resource:
1562
+ def create_resource(self, name) -> Resource | None:
1563
1563
  """
1564
1564
  Create a resource with the given name.
1565
1565
 
@@ -1628,6 +1628,9 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
1628
1628
  if perm:
1629
1629
  return perm
1630
1630
  resource = self.create_resource(resource_name)
1631
+ if resource is None:
1632
+ log.error(const.LOGMSG_ERR_SEC_ADD_PERMVIEW, f"Resource creation failed {resource_name}")
1633
+ return None
1631
1634
  action = self.create_action(action_name)
1632
1635
  perm = self.permission_model()
1633
1636
  perm.resource_id, perm.action_id = resource.id, action.id
@@ -46,10 +46,7 @@ from airflow.utils.net import get_hostname
46
46
  if TYPE_CHECKING:
47
47
  from airflow.api_fastapi.auth.managers.base_auth_manager import ResourceMethod
48
48
  from airflow.api_fastapi.auth.managers.models.batch_apis import (
49
- IsAuthorizedConnectionRequest,
50
49
  IsAuthorizedDagRequest,
51
- IsAuthorizedPoolRequest,
52
- IsAuthorizedVariableRequest,
53
50
  )
54
51
  from airflow.models import DagRun, Pool, TaskInstance, Variable
55
52
  from airflow.models.connection import Connection
@@ -170,15 +167,13 @@ def has_access_connection(method: ResourceMethod) -> Callable[[T], T]:
170
167
  @wraps(func)
171
168
  def decorated(*args, **kwargs):
172
169
  connections: set[Connection] = set(args[1])
173
- requests: Sequence[IsAuthorizedConnectionRequest] = [
174
- {
175
- "method": method,
176
- "details": ConnectionDetails(conn_id=connection.conn_id),
177
- }
170
+ is_authorized = all(
171
+ get_auth_manager().is_authorized_connection(
172
+ method=method,
173
+ details=ConnectionDetails(conn_id=connection.conn_id),
174
+ user=get_auth_manager().get_user(),
175
+ )
178
176
  for connection in connections
179
- ]
180
- is_authorized = get_auth_manager().batch_is_authorized_connection(
181
- requests, user=get_auth_manager().get_user()
182
177
  )
183
178
  return _has_access(
184
179
  is_authorized=is_authorized,
@@ -284,15 +279,11 @@ def has_access_pool(method: ResourceMethod) -> Callable[[T], T]:
284
279
  @wraps(func)
285
280
  def decorated(*args, **kwargs):
286
281
  pools: set[Pool] = set(args[1])
287
- requests: Sequence[IsAuthorizedPoolRequest] = [
288
- {
289
- "method": method,
290
- "details": PoolDetails(name=pool.pool),
291
- }
282
+ is_authorized = all(
283
+ get_auth_manager().is_authorized_pool(
284
+ method=method, details=PoolDetails(name=pool.pool), user=get_auth_manager().get_user()
285
+ )
292
286
  for pool in pools
293
- ]
294
- is_authorized = get_auth_manager().batch_is_authorized_pool(
295
- requests, user=get_auth_manager().get_user()
296
287
  )
297
288
  return _has_access(
298
289
  is_authorized=is_authorized,
@@ -310,23 +301,15 @@ def has_access_variable(method: ResourceMethod) -> Callable[[T], T]:
310
301
  def has_access_decorator(func: T):
311
302
  @wraps(func)
312
303
  def decorated(*args, **kwargs):
313
- if len(args) == 1:
314
- # No items provided
315
- is_authorized = get_auth_manager().is_authorized_variable(
316
- method=method, user=get_auth_manager().get_user()
317
- )
318
- else:
319
- variables: set[Variable] = set(args[1])
320
- requests: Sequence[IsAuthorizedVariableRequest] = [
321
- {
322
- "method": method,
323
- "details": VariableDetails(key=variable.key),
324
- }
325
- for variable in variables
326
- ]
327
- is_authorized = get_auth_manager().batch_is_authorized_variable(
328
- requests, user=get_auth_manager().get_user()
304
+ variables: set[Variable] = set(args[1])
305
+ is_authorized = all(
306
+ get_auth_manager().is_authorized_variable(
307
+ method=method,
308
+ details=VariableDetails(key=variable.key),
309
+ user=get_auth_manager().get_user(),
329
310
  )
311
+ for variable in variables
312
+ )
330
313
  return _has_access(
331
314
  is_authorized=is_authorized,
332
315
  func=func,