apache-airflow-providers-fab 2.0.2rc2__tar.gz → 2.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/PKG-INFO +11 -11
  2. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/README.rst +5 -5
  3. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/auth-manager/webserver-authentication.rst +8 -8
  4. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/changelog.rst +30 -0
  5. apache_airflow_providers_fab-2.1.0/docs/commits.rst +35 -0
  6. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/configurations-ref.rst +2 -0
  7. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/index.rst +6 -6
  8. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/provider.yaml +72 -2
  9. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/pyproject.toml +6 -6
  10. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/__init__.py +3 -3
  11. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py +4 -0
  12. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py +4 -0
  13. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/models/__init__.py +56 -6
  14. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/models/anonymous_user.py +5 -1
  15. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/security_manager/override.py +25 -21
  16. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/get_provider_info.py +56 -0
  17. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/app.py +2 -0
  18. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/auth.py +3 -3
  19. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/extensions/init_jinja_globals.py +1 -1
  20. apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/extensions/init_wsgi_middlewares.py +41 -0
  21. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/package-lock.json +1258 -520
  22. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/package.json +7 -7
  23. apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.js → apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/main.eb83be09d97c23018bcb.js +1 -1
  24. apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/manifest.json +20 -0
  25. apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js → apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/moment.75a9286ff6019fefe5d9.js +1 -1
  26. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_endpoints/test_auth.py +0 -2
  27. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/models/test_anonymous_user.py +1 -1
  28. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/test_security.py +6 -6
  29. apache_airflow_providers_fab-2.0.2rc2/docs/commits.rst +0 -522
  30. apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/manifest.json +0 -20
  31. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/3rd-party-licenses/LICENSES-ui.txt +0 -0
  32. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/NOTICE +0 -0
  33. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/api-ref/fab-public-api-ref.rst +0 -0
  34. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/api-ref/fab-token-api-ref.rst +0 -0
  35. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/auth-manager/access-control.rst +0 -0
  36. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/auth-manager/api-authentication.rst +0 -0
  37. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/auth-manager/configuring-flask-app.rst +0 -0
  38. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/auth-manager/index.rst +0 -0
  39. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/auth-manager/security.rst +0 -0
  40. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/auth-manager/token.rst +0 -0
  41. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/cli-ref.rst +0 -0
  42. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/conf.py +0 -0
  43. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/img/add-role.png +0 -0
  44. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/img/diagram_fab_auth_manager_airflow_architecture.md5sum +0 -0
  45. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/img/diagram_fab_auth_manager_airflow_architecture.png +0 -0
  46. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/img/diagram_fab_auth_manager_airflow_architecture.py +0 -0
  47. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/img/new-role.png +0 -0
  48. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/installing-providers-from-sources.rst +0 -0
  49. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/migrations-ref.rst +0 -0
  50. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/security.rst +0 -0
  51. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/docs/upgrading.rst +0 -0
  52. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/__init__.py +0 -0
  53. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/3rd-party-licenses/LICENSES-ui.txt +0 -0
  54. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/__init__.py +0 -0
  55. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/LICENSE +0 -0
  56. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/alembic.ini +0 -0
  57. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/__init__.py +0 -0
  58. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api/__init__.py +0 -0
  59. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api/auth/__init__.py +0 -0
  60. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/__init__.py +0 -0
  61. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/basic_auth.py +0 -0
  62. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/kerberos_auth.py +0 -0
  63. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/session.py +0 -0
  64. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_endpoints/__init__.py +0 -0
  65. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/__init__.py +0 -0
  66. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/__init__.py +0 -0
  67. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/login.py +0 -0
  68. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/__init__.py +0 -0
  69. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/v1-fab-auth-manager-generated.yaml +0 -0
  70. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
  71. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py +0 -0
  72. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
  73. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/api_fastapi/services/login.py +0 -0
  74. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/cli_commands/__init__.py +0 -0
  75. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/cli_commands/db_command.py +0 -0
  76. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/cli_commands/definition.py +0 -0
  77. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/cli_commands/role_command.py +0 -0
  78. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/cli_commands/sync_perm_command.py +0 -0
  79. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/cli_commands/user_command.py +0 -0
  80. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/cli_commands/utils.py +0 -0
  81. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/fab_auth_manager.py +0 -0
  82. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/models/db.py +0 -0
  83. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/openapi/__init__.py +0 -0
  84. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/openapi/v1-flask-api.yaml +0 -0
  85. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/schemas/__init__.py +0 -0
  86. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/schemas/role_and_permission_schema.py +0 -0
  87. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/schemas/user_schema.py +0 -0
  88. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/security_manager/__init__.py +0 -0
  89. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/security_manager/constants.py +0 -0
  90. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/views/__init__.py +0 -0
  91. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/views/permissions.py +0 -0
  92. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/views/roles_list.py +0 -0
  93. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/views/user.py +0 -0
  94. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/views/user_edit.py +0 -0
  95. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/auth_manager/views/user_stats.py +0 -0
  96. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/migrations/README +0 -0
  97. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/migrations/__init__.py +0 -0
  98. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/migrations/env.py +0 -0
  99. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/migrations/script.py.mako +0 -0
  100. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/migrations/versions/0001_1_4_0_placeholder_migration.py +0 -0
  101. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/migrations/versions/__init__.py +0 -0
  102. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/__init__.py +0 -0
  103. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/airflow_flask_app.py +0 -0
  104. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/api_connexion/__init__.py +0 -0
  105. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/api_connexion/exceptions.py +0 -0
  106. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/api_connexion/parameters.py +0 -0
  107. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/api_connexion/security.py +0 -0
  108. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/api_connexion/types.py +0 -0
  109. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/constants.py +0 -0
  110. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/extensions/__init__.py +0 -0
  111. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/extensions/init_appbuilder.py +0 -0
  112. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/extensions/init_manifest_files.py +0 -0
  113. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/extensions/init_security.py +0 -0
  114. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/extensions/init_session.py +0 -0
  115. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/extensions/init_views.py +0 -0
  116. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/security/__init__.py +0 -0
  117. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/security/permissions.py +0 -0
  118. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/security_appless.py +0 -0
  119. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/security_manager.py +0 -0
  120. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/session.py +0 -0
  121. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/css/bootstrap-theme.css +0 -0
  122. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/css/flash.css +0 -0
  123. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/css/loading-dots.css +0 -0
  124. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/css/main.css +0 -0
  125. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/css/material-icons.css +0 -0
  126. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/dist/48f0ea180c40270a5b05.png +0 -0
  127. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/dist/649c0b07771e68fafdeb.png +0 -0
  128. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.feec4a4075c2f3d6ae01.css → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.a26736fa84b3356edac0.css +0 -0
  129. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.feec4a4075c2f3d6ae01.js → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.a26736fa84b3356edac0.js +0 -0
  130. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/dist/f7490d556a6c42e49ba4.png +0 -0
  131. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.css → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/flash.fbcc531a39479aa27065.css +0 -0
  132. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.js → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/flash.fbcc531a39479aa27065.js +0 -0
  133. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.css +0 -0
  134. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js +0 -0
  135. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js.LICENSE.txt +0 -0
  136. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/loadingDots.48ab7d5b04e66f2686b0.css → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/loadingDots.e1fc82c3ac3f9af3771e.css +0 -0
  137. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/loadingDots.48ab7d5b04e66f2686b0.js → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/loadingDots.e1fc82c3ac3f9af3771e.js +0 -0
  138. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.css → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/main.eb83be09d97c23018bcb.css +0 -0
  139. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/main.edb2d40dfbbc537916e3.js.LICENSE.txt → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/main.eb83be09d97c23018bcb.js.LICENSE.txt +0 -0
  140. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/materialIcons.57390fa60d8f61175334.css → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/materialIcons.b21138ea09d0cdf9ffc4.css +0 -0
  141. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/materialIcons.57390fa60d8f61175334.js → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/materialIcons.b21138ea09d0cdf9ffc4.js +0 -0
  142. /apache_airflow_providers_fab-2.0.2rc2/src/airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js.LICENSE.txt → /apache_airflow_providers_fab-2.1.0/src/airflow/providers/fab/www/static/dist/moment.75a9286ff6019fefe5d9.js.LICENSE.txt +0 -0
  143. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/dist/oss-licenses.json +0 -0
  144. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/js/datetime_utils.js +0 -0
  145. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/js/main.js +0 -0
  146. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/sort_asc.png +0 -0
  147. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/sort_both.png +0 -0
  148. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/static/sort_desc.png +0 -0
  149. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/airflow/_messages.html +0 -0
  150. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/airflow/error.html +0 -0
  151. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/airflow/main.html +0 -0
  152. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/airflow/traceback.html +0 -0
  153. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/appbuilder/flash.html +0 -0
  154. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/appbuilder/index.html +0 -0
  155. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/appbuilder/navbar.html +0 -0
  156. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/appbuilder/navbar_menu.html +0 -0
  157. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/templates/appbuilder/navbar_right.html +0 -0
  158. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/utils.py +0 -0
  159. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/views.py +0 -0
  160. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/src/airflow/providers/fab/www/webpack.config.js +0 -0
  161. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/conftest.py +0 -0
  162. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/__init__.py +0 -0
  163. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/__init__.py +0 -0
  164. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/__init__.py +0 -0
  165. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api/__init__.py +0 -0
  166. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api/auth/__init__.py +0 -0
  167. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api/auth/backend/__init__.py +0 -0
  168. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api/auth/backend/test_basic_auth.py +0 -0
  169. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api/auth/backend/test_kerberos_auth.py +0 -0
  170. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api/auth/backend/test_session.py +0 -0
  171. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_endpoints/__init__.py +0 -0
  172. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_endpoints/api_connexion_utils.py +0 -0
  173. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_endpoints/remote_user_api_auth_backend.py +0 -0
  174. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_endpoints/test_role_and_permission_endpoint.py +0 -0
  175. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_endpoints/test_user_endpoint.py +0 -0
  176. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_fastapi/__init__.py +0 -0
  177. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_fastapi/conftest.py +0 -0
  178. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
  179. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_fastapi/routes/test_login.py +0 -0
  180. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
  181. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/api_fastapi/services/test_login.py +0 -0
  182. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/cli_commands/__init__.py +0 -0
  183. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/cli_commands/test_db_command.py +0 -0
  184. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/cli_commands/test_definition.py +0 -0
  185. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/cli_commands/test_role_command.py +0 -0
  186. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/cli_commands/test_sync_perm_command.py +0 -0
  187. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/cli_commands/test_user_command.py +0 -0
  188. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/cli_commands/test_utils.py +0 -0
  189. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/conftest.py +0 -0
  190. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/models/__init__.py +0 -0
  191. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/models/test_db.py +0 -0
  192. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/schemas/__init__.py +0 -0
  193. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/schemas/test_role_and_permission_schema.py +0 -0
  194. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/schemas/test_user_schema.py +0 -0
  195. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/security_manager/__init__.py +0 -0
  196. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/security_manager/test_constants.py +0 -0
  197. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/security_manager/test_override.py +0 -0
  198. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/test_fab_auth_manager.py +0 -0
  199. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/test_models.py +0 -0
  200. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/views/__init__.py +0 -0
  201. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/views/test_permissions.py +0 -0
  202. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/views/test_roles_list.py +0 -0
  203. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/views/test_user.py +0 -0
  204. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/views/test_user_edit.py +0 -0
  205. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/auth_manager/views/test_user_stats.py +0 -0
  206. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/decorators.py +0 -0
  207. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/utils.py +0 -0
  208. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/www/__init__.py +0 -0
  209. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/www/test_auth.py +0 -0
  210. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/www/test_utils.py +0 -0
  211. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/www/views/__init__.py +0 -0
  212. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/www/views/conftest.py +0 -0
  213. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/tests/unit/fab/www/views/test_connection_form_fields.py +0 -0
  214. {apache_airflow_providers_fab-2.0.2rc2 → apache_airflow_providers_fab-2.1.0}/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.0.2rc2
3
+ Version: 2.1.0
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>
@@ -22,11 +22,11 @@ Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Topic :: System :: Monitoring
23
23
  License-File: 3rd-party-licenses/LICENSES-ui.txt
24
24
  License-File: NOTICE
25
- Requires-Dist: apache-airflow>=3.0.0rc1
26
- Requires-Dist: apache-airflow-providers-common-compat>=1.2.1rc1
25
+ Requires-Dist: apache-airflow>=3.0.2
26
+ Requires-Dist: apache-airflow-providers-common-compat>=1.2.1
27
27
  Requires-Dist: blinker>=1.6.2
28
28
  Requires-Dist: flask>=2.2.1,<2.3
29
- Requires-Dist: flask-appbuilder==4.5.3
29
+ Requires-Dist: flask-appbuilder==4.6.3
30
30
  Requires-Dist: flask-login>=0.6.2
31
31
  Requires-Dist: flask-session>=0.4.0,<0.6
32
32
  Requires-Dist: flask-wtf>=1.1.0
@@ -36,8 +36,8 @@ Requires-Dist: werkzeug>=2.2,<4
36
36
  Requires-Dist: wtforms>=3.0,<4
37
37
  Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos"
38
38
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
39
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/changelog.html
40
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2
39
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0/changelog.html
40
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0
41
41
  Project-URL: Mastodon, https://fosstodon.org/@airflow
42
42
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
43
43
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -69,7 +69,7 @@ Provides-Extra: kerberos
69
69
 
70
70
  Package ``apache-airflow-providers-fab``
71
71
 
72
- Release: ``2.0.2``
72
+ Release: ``2.1.0``
73
73
 
74
74
 
75
75
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
@@ -82,7 +82,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
82
82
  are in ``airflow.providers.fab`` python package.
83
83
 
84
84
  You can find package information and changelog for the provider
85
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/>`_.
85
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0/>`_.
86
86
 
87
87
  Installation
88
88
  ------------
@@ -99,11 +99,11 @@ Requirements
99
99
  ========================================== ==================
100
100
  PIP package Version required
101
101
  ========================================== ==================
102
- ``apache-airflow`` ``>=3.0.0``
102
+ ``apache-airflow`` ``>=3.0.2``
103
103
  ``apache-airflow-providers-common-compat`` ``>=1.2.1``
104
104
  ``blinker`` ``>=1.6.2``
105
105
  ``flask`` ``>=2.2.1,<2.3``
106
- ``flask-appbuilder`` ``==4.5.3``
106
+ ``flask-appbuilder`` ``==4.6.3``
107
107
  ``flask-login`` ``>=0.6.2``
108
108
  ``flask-session`` ``>=0.4.0,<0.6``
109
109
  ``flask-wtf`` ``>=1.1.0``
@@ -133,5 +133,5 @@ Dependent package
133
133
  ================================================================================================================== =================
134
134
 
135
135
  The changelog for the provider package can be found in the
136
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/changelog.html>`_.
136
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0/changelog.html>`_.
137
137
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  Package ``apache-airflow-providers-fab``
25
25
 
26
- Release: ``2.0.2``
26
+ Release: ``2.1.0``
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.0.2/>`_.
39
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0/>`_.
40
40
 
41
41
  Installation
42
42
  ------------
@@ -53,11 +53,11 @@ Requirements
53
53
  ========================================== ==================
54
54
  PIP package Version required
55
55
  ========================================== ==================
56
- ``apache-airflow`` ``>=3.0.0``
56
+ ``apache-airflow`` ``>=3.0.2``
57
57
  ``apache-airflow-providers-common-compat`` ``>=1.2.1``
58
58
  ``blinker`` ``>=1.6.2``
59
59
  ``flask`` ``>=2.2.1,<2.3``
60
- ``flask-appbuilder`` ``==4.5.3``
60
+ ``flask-appbuilder`` ``==4.6.3``
61
61
  ``flask-login`` ``>=0.6.2``
62
62
  ``flask-session`` ``>=0.4.0,<0.6``
63
63
  ``flask-wtf`` ``>=1.1.0``
@@ -87,4 +87,4 @@ Dependent package
87
87
  ================================================================================================================== =================
88
88
 
89
89
  The changelog for the provider package can be found in the
90
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/changelog.html>`_.
90
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0/changelog.html>`_.
@@ -232,15 +232,15 @@ Here is an example of what you might have in your webserver_config.py:
232
232
 
233
233
  .. code-block:: python
234
234
 
235
- import os
236
- import jwt
237
- import requests
238
235
  import logging
239
236
  from base64 import b64decode
237
+
238
+ import jwt
239
+ import requests
240
240
  from cryptography.hazmat.primitives import serialization
241
- from flask_appbuilder.security.manager import AUTH_DB, AUTH_OAUTH
242
- from airflow import configuration as conf
243
- from airflow.www.security import AirflowSecurityManager
241
+ from flask_appbuilder.security.manager import AUTH_OAUTH
242
+
243
+ from airflow.providers.fab.auth_manager.security_manager.override import FabAirflowSecurityManagerOverride
244
244
 
245
245
  log = logging.getLogger(__name__)
246
246
 
@@ -284,11 +284,11 @@ Here is an example of what you might have in your webserver_config.py:
284
284
  public_key = serialization.load_der_public_key(key_der)
285
285
 
286
286
 
287
- class CustomSecurityManager(AirflowSecurityManager):
287
+ class CustomSecurityManager(FabAirflowSecurityManagerOverride):
288
288
  def get_oauth_user_info(self, provider, response):
289
289
  if provider == "keycloak":
290
290
  token = response["access_token"]
291
- me = jwt.decode(token, public_key, algorithms=["HS256", "RS256"])
291
+ me = jwt.decode(token, public_key, algorithms=["HS256", "RS256"], audience="account")
292
292
 
293
293
  # Extract roles from resource access
294
294
  realm_access = me.get("realm_access", {})
@@ -20,6 +20,36 @@
20
20
  Changelog
21
21
  ---------
22
22
 
23
+ 2.1.0
24
+ .....
25
+
26
+ Features
27
+ ~~~~~~~~
28
+
29
+ * ``Add back ProxyFix Middleware for flask app builder (#49942)``
30
+ * ``Move access_denied_message webserver config to fab (#50208)``
31
+ * ``Move webserver expose_hostname config to fab (#50269)``
32
+
33
+ Misc
34
+ ~~~~
35
+
36
+ * ``Bump the fab-ui-package-updates group across 1 directory with 4 updates (#50312)``
37
+ * ``Bump the fab-ui-package-updates group across 1 directory with 4 updates (#50035)``
38
+ * ``Upgrade 'flask-appbuilder' to 4.6.3 in FAB provider (#50513)``
39
+
40
+ Doc-only
41
+ ~~~~~~~~
42
+
43
+ * ``docs: Update oauth keycloak example with new security manager (#50284)``
44
+ * ``docs: conditionally render section‐move links in sections‐and‐options include (#50582)``
45
+
46
+ .. Below changes are excluded from the changelog. Move them to
47
+ appropriate section above if needed. Do not delete the lines(!):
48
+ * ``Update description of provider.yaml dependencies (#50231)``
49
+ * ``Avoid committing history for providers (#49907)``
50
+ * ``Fix main - Generate FAB assets (#50546)``
51
+ * ``Fix Fab docs (#50594)``
52
+
23
53
  2.0.2
24
54
  .....
25
55
 
@@ -0,0 +1,35 @@
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
+
19
+ .. NOTE! THIS FILE IS AUTOMATICALLY GENERATED AND WILL BE OVERWRITTEN!
20
+
21
+ .. IF YOU WANT TO MODIFY THIS FILE, YOU SHOULD MODIFY THE TEMPLATE
22
+ `PROVIDER_COMMITS_TEMPLATE.rst.jinja2` IN the `dev/breeze/src/airflow_breeze/templates` DIRECTORY
23
+
24
+ .. THE REMAINDER OF THE FILE IS AUTOMATICALLY GENERATED. IT WILL BE OVERWRITTEN!
25
+
26
+ Package apache-airflow-providers-fab
27
+ ------------------------------------------------------
28
+
29
+ `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
30
+
31
+
32
+ This is detailed commit list of changes for versions provider package: ``fab``.
33
+ For high-level changelog, see :doc:`package information including changelog <index>`.
34
+
35
+ .. airflow-providers-commits::
@@ -16,4 +16,6 @@
16
16
  under the License.
17
17
 
18
18
  .. include:: /../../../devel-common/src/sphinx_exts/includes/providers-configurations-ref.rst
19
+
20
+
19
21
  .. include:: /../../../devel-common/src/sphinx_exts/includes/sections-and-options.rst
@@ -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.0.2
87
+ Release: 2.1.0
88
88
 
89
89
  Provider package
90
90
  ----------------
@@ -102,16 +102,16 @@ For the minimum Airflow version supported, see ``Requirements`` below.
102
102
  Requirements
103
103
  ------------
104
104
 
105
- The minimum Apache Airflow version supported by this provider distribution is ``3.0.0``.
105
+ The minimum Apache Airflow version supported by this provider distribution is ``3.0.2``.
106
106
 
107
107
  ========================================== ==================
108
108
  PIP package Version required
109
109
  ========================================== ==================
110
- ``apache-airflow`` ``>=3.0.0``
110
+ ``apache-airflow`` ``>=3.0.2``
111
111
  ``apache-airflow-providers-common-compat`` ``>=1.2.1``
112
112
  ``blinker`` ``>=1.6.2``
113
113
  ``flask`` ``>=2.2.1,<2.3``
114
- ``flask-appbuilder`` ``==4.5.3``
114
+ ``flask-appbuilder`` ``==4.6.3``
115
115
  ``flask-login`` ``>=0.6.2``
116
116
  ``flask-session`` ``>=0.4.0,<0.6``
117
117
  ``flask-wtf`` ``>=1.1.0``
@@ -146,5 +146,5 @@ Downloading official packages
146
146
  You can download officially released packages and verify their checksums and signatures from the
147
147
  `Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
148
148
 
149
- * `The apache-airflow-providers-fab 2.0.2 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.0.2.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.0.2.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.0.2.tar.gz.sha512>`__)
150
- * `The apache-airflow-providers-fab 2.0.2 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.0.2-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.0.2-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.0.2-py3-none-any.whl.sha512>`__)
149
+ * `The apache-airflow-providers-fab 2.1.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.1.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.1.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.1.0.tar.gz.sha512>`__)
150
+ * `The apache-airflow-providers-fab 2.1.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.1.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.1.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-2.1.0-py3-none-any.whl.sha512>`__)
@@ -28,10 +28,14 @@ description: |
28
28
  # For providers until we think it should be released.
29
29
  state: ready
30
30
 
31
- source-date-epoch: 1745478857
31
+ source-date-epoch: 1747132761
32
32
 
33
- # note that those versions are maintained by release manager - do not update them manually
33
+ # Note that those versions are maintained by release manager - do not update them manually
34
+ # with the exception of case where other provider in sources has >= new provider version.
35
+ # In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
36
+ # to be done in the same PR
34
37
  versions:
38
+ - 2.1.0
35
39
  - 2.0.2
36
40
  - 2.0.1
37
41
  - 2.0.0
@@ -56,6 +60,20 @@ config:
56
60
  fab:
57
61
  description: This section contains configs specific to FAB provider.
58
62
  options:
63
+ access_denied_message:
64
+ description: |
65
+ The message displayed when a user attempts to execute actions beyond their authorised privileges.
66
+ version_added: 2.1.0
67
+ type: string
68
+ example: ~
69
+ default: "Access is Denied"
70
+ expose_hostname:
71
+ description: |
72
+ Expose hostname in the web server
73
+ version_added: 2.1.0
74
+ type: string
75
+ example: ~
76
+ default: "False"
59
77
  auth_rate_limited:
60
78
  description: |
61
79
  Boolean for enabling rate limiting on authentication endpoints.
@@ -119,6 +137,58 @@ config:
119
137
  type: integer
120
138
  example: ~
121
139
  default: "43200"
140
+ enable_proxy_fix:
141
+ description: |
142
+ Enable werkzeug ``ProxyFix`` middleware for reverse proxy
143
+ version_added: 2.1.0
144
+ type: boolean
145
+ example: ~
146
+ default: "False"
147
+ proxy_fix_x_for:
148
+ description: |
149
+ Number of values to trust for ``X-Forwarded-For``.
150
+ See `Werkzeug: X-Forwarded-For Proxy Fix
151
+ <https://werkzeug.palletsprojects.com/en/2.3.x/middleware/proxy_fix/>`__ for more details.
152
+ version_added: 2.1.0
153
+ type: integer
154
+ example: ~
155
+ default: "1"
156
+ proxy_fix_x_proto:
157
+ description: |
158
+ Number of values to trust for ``X-Forwarded-Proto``.
159
+ See `Werkzeug: X-Forwarded-For Proxy Fix
160
+ <https://werkzeug.palletsprojects.com/en/2.3.x/middleware/proxy_fix/>`__ for more details.
161
+ version_added: 2.1.0
162
+ type: integer
163
+ example: ~
164
+ default: "1"
165
+ proxy_fix_x_host:
166
+ description: |
167
+ Number of values to trust for ``X-Forwarded-Host``.
168
+ See `Werkzeug: X-Forwarded-For Proxy Fix
169
+ <https://werkzeug.palletsprojects.com/en/2.3.x/middleware/proxy_fix/>`__ for more details.
170
+ version_added: 2.1.0
171
+ type: integer
172
+ example: ~
173
+ default: "1"
174
+ proxy_fix_x_port:
175
+ description: |
176
+ Number of values to trust for ``X-Forwarded-Port``.
177
+ See `Werkzeug: X-Forwarded-For Proxy Fix
178
+ <https://werkzeug.palletsprojects.com/en/2.3.x/middleware/proxy_fix/>`__ for more details.
179
+ version_added: 2.1.0
180
+ type: integer
181
+ example: ~
182
+ default: "1"
183
+ proxy_fix_x_prefix:
184
+ description: |
185
+ Number of values to trust for ``X-Forwarded-Prefix``.
186
+ See `Werkzeug: X-Forwarded-For Proxy Fix
187
+ <https://werkzeug.palletsprojects.com/en/2.3.x/middleware/proxy_fix/>`__ for more details.
188
+ version_added: 2.1.0
189
+ type: integer
190
+ example: ~
191
+ default: "1"
122
192
 
123
193
  auth-managers:
124
194
  - airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
25
25
 
26
26
  [project]
27
27
  name = "apache-airflow-providers-fab"
28
- version = "2.0.2rc2"
28
+ version = "2.1.0"
29
29
  description = "Provider package apache-airflow-providers-fab for Apache Airflow"
30
30
  readme = "README.rst"
31
31
  authors = [
@@ -57,8 +57,8 @@ license-files = ["NOTICE", "*/LICENSE*"]
57
57
  # Make sure to run ``breeze static-checks --type update-providers-dependencies --all-files``
58
58
  # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
59
59
  dependencies = [
60
- "apache-airflow>=3.0.0rc1",
61
- "apache-airflow-providers-common-compat>=1.2.1rc1",
60
+ "apache-airflow>=3.0.2",
61
+ "apache-airflow-providers-common-compat>=1.2.1",
62
62
  # Blinker use for signals in Flask, this is an optional dependency in Flask 2.2 and lower.
63
63
  # In Flask 2.3 it becomes a mandatory dependency, and flask signals are always available.
64
64
  "blinker>=1.6.2",
@@ -71,7 +71,7 @@ dependencies = [
71
71
  # Every time we update FAB version here, please make sure that you review the classes and models in
72
72
  # `airflow/providers/fab/auth_manager/security_manager/override.py` with their upstream counterparts.
73
73
  # In particular, make sure any breaking changes, for example any new methods, are accounted for.
74
- "flask-appbuilder==4.5.3",
74
+ "flask-appbuilder==4.6.3",
75
75
  "flask-login>=0.6.2",
76
76
  # Flask-Session 0.6 add new arguments into the SqlAlchemySessionInterface constructor as well as
77
77
  # all parameters now are mandatory which make AirflowDatabaseSessionInterface incompatible with this version.
@@ -127,8 +127,8 @@ apache-airflow-providers-common-sql = {workspace = true}
127
127
  apache-airflow-providers-standard = {workspace = true}
128
128
 
129
129
  [project.urls]
130
- "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2"
131
- "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/changelog.html"
130
+ "Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0"
131
+ "Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/2.1.0/changelog.html"
132
132
  "Bug Tracker" = "https://github.com/apache/airflow/issues"
133
133
  "Source Code" = "https://github.com/apache/airflow"
134
134
  "Slack Chat" = "https://s.apache.org/airflow-slack"
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "2.0.2"
32
+ __version__ = "2.1.0"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
- "3.0.0"
35
+ "3.0.2"
36
36
  ):
37
37
  raise RuntimeError(
38
- f"The package `apache-airflow-providers-fab:{__version__}` needs Apache Airflow 3.0.0+"
38
+ f"The package `apache-airflow-providers-fab:{__version__}` needs Apache Airflow 3.0.2+"
39
39
  )
@@ -123,6 +123,8 @@ def patch_role(*, role_name: str, update_mask: UpdateMask = None) -> APIResponse
123
123
  """Update a role."""
124
124
  security_manager = cast("FabAuthManager", get_auth_manager()).security_manager
125
125
  body = request.json
126
+ if body is None:
127
+ raise BadRequest("Request body is required")
126
128
  try:
127
129
  data = role_schema.load(body)
128
130
  except ValidationError as err:
@@ -156,6 +158,8 @@ def post_role() -> APIResponse:
156
158
  """Create a new role."""
157
159
  security_manager = cast("FabAuthManager", get_auth_manager()).security_manager
158
160
  body = request.json
161
+ if body is None:
162
+ raise BadRequest("Request body is required")
159
163
  try:
160
164
  data = role_schema.load(body)
161
165
  except ValidationError as err:
@@ -88,6 +88,8 @@ def get_users(*, limit: int, order_by: str = "id", offset: str | None = None) ->
88
88
  @requires_access_custom_view("POST", permissions.RESOURCE_USER)
89
89
  def post_user() -> APIResponse:
90
90
  """Create a new user."""
91
+ if request.json is None:
92
+ raise BadRequest("Request body is required")
91
93
  try:
92
94
  data = user_schema.load(request.json)
93
95
  except ValidationError as e:
@@ -131,6 +133,8 @@ def post_user() -> APIResponse:
131
133
  @requires_access_custom_view("PUT", permissions.RESOURCE_USER)
132
134
  def patch_user(*, username: str, update_mask: UpdateMask = None) -> APIResponse:
133
135
  """Update a user."""
136
+ if request.json is None:
137
+ raise BadRequest("Request body is required")
134
138
  try:
135
139
  data = user_schema.load(request.json)
136
140
  except ValidationError as e:
@@ -102,11 +102,37 @@ assoc_permission_role = Table(
102
102
  "ab_permission_view_role",
103
103
  Model.metadata,
104
104
  Column("id", Integer, primary_key=True),
105
- Column("permission_view_id", Integer, ForeignKey("ab_permission_view.id")),
106
- Column("role_id", Integer, ForeignKey("ab_role.id")),
105
+ Column(
106
+ "permission_view_id",
107
+ Integer,
108
+ ForeignKey("ab_permission_view.id", ondelete="CASCADE"),
109
+ ),
110
+ Column("role_id", Integer, ForeignKey("ab_role.id", ondelete="CASCADE")),
107
111
  UniqueConstraint("permission_view_id", "role_id"),
108
112
  )
109
113
 
114
+ assoc_user_group = Table(
115
+ "ab_user_group",
116
+ Model.metadata,
117
+ Column("id", Integer, primary_key=True),
118
+ Column("user_id", Integer, ForeignKey("ab_user.id", ondelete="CASCADE")),
119
+ Column("group_id", Integer, ForeignKey("ab_group.id", ondelete="CASCADE")),
120
+ UniqueConstraint("user_id", "group_id"),
121
+ Index("idx_user_id", "user_id"),
122
+ Index("idx_user_group_id", "group_id"),
123
+ )
124
+
125
+ assoc_group_role = Table(
126
+ "ab_group_role",
127
+ Model.metadata,
128
+ Column("id", Integer, primary_key=True),
129
+ Column("group_id", Integer, ForeignKey("ab_group.id", ondelete="CASCADE")),
130
+ Column("role_id", Integer, ForeignKey("ab_role.id", ondelete="CASCADE")),
131
+ UniqueConstraint("group_id", "role_id"),
132
+ Index("idx_group_id", "group_id"),
133
+ Index("idx_group_role_id", "role_id"),
134
+ )
135
+
110
136
 
111
137
  class Role(Model):
112
138
  """Represents a user role to which permissions can be assigned."""
@@ -115,7 +141,29 @@ class Role(Model):
115
141
 
116
142
  id = Column(Integer, primary_key=True)
117
143
  name = Column(String(64), unique=True, nullable=False)
118
- permissions = relationship("Permission", secondary=assoc_permission_role, backref="role", lazy="joined")
144
+ permissions = relationship(
145
+ "Permission",
146
+ secondary=assoc_permission_role,
147
+ backref="role",
148
+ lazy="joined",
149
+ passive_deletes=True,
150
+ )
151
+
152
+ def __repr__(self):
153
+ return self.name
154
+
155
+
156
+ class Group(Model):
157
+ """Represents a user group."""
158
+
159
+ __tablename__ = "ab_group"
160
+
161
+ id = Column(Integer, primary_key=True)
162
+ name = Column(String(100), unique=True, nullable=False)
163
+ label = Column(String(150))
164
+ description = Column(String(512))
165
+ users = relationship("User", secondary=assoc_user_group, backref="groups", passive_deletes=True)
166
+ roles = relationship("Role", secondary=assoc_group_role, backref="groups", passive_deletes=True)
119
167
 
120
168
  def __repr__(self):
121
169
  return self.name
@@ -148,8 +196,8 @@ assoc_user_role = Table(
148
196
  "ab_user_role",
149
197
  Model.metadata,
150
198
  Column("id", Integer, primary_key=True),
151
- Column("user_id", Integer, ForeignKey("ab_user.id")),
152
- Column("role_id", Integer, ForeignKey("ab_role.id")),
199
+ Column("user_id", Integer, ForeignKey("ab_user.id", ondelete="CASCADE")),
200
+ Column("role_id", Integer, ForeignKey("ab_role.id", ondelete="CASCADE")),
153
201
  UniqueConstraint("user_id", "role_id"),
154
202
  )
155
203
 
@@ -170,7 +218,9 @@ class User(Model, BaseUser):
170
218
  last_login = Column(DateTime)
171
219
  login_count = Column(Integer)
172
220
  fail_login_count = Column(Integer)
173
- roles = relationship("Role", secondary=assoc_user_role, backref="user", lazy="selectin")
221
+ roles = relationship(
222
+ "Role", secondary=assoc_user_role, backref="user", lazy="selectin", passive_deletes=True
223
+ )
174
224
  created_on = Column(DateTime, default=datetime.datetime.now, nullable=True)
175
225
  changed_on = Column(DateTime, default=datetime.datetime.now, nullable=True)
176
226
 
@@ -37,13 +37,17 @@ class AnonymousUser(AnonymousUserMixin, BaseUser):
37
37
  if not self._roles:
38
38
  public_role = current_app.config.get("AUTH_ROLE_PUBLIC", None)
39
39
  self._roles = {current_app.appbuilder.sm.find_role(public_role)} if public_role else set()
40
- return self._roles
40
+ return list(self._roles)
41
41
 
42
42
  @roles.setter
43
43
  def roles(self, roles):
44
44
  self._roles = roles
45
45
  self._perms = set()
46
46
 
47
+ @property
48
+ def groups(self):
49
+ return []
50
+
47
51
  @property
48
52
  def perms(self):
49
53
  if not self._perms: