apache-airflow-providers-fab 2.4.4rc1__tar.gz → 3.0.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.
Potentially problematic release.
This version of apache-airflow-providers-fab might be problematic. Click here for more details.
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/PKG-INFO +18 -12
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/README.rst +8 -5
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/changelog.rst +29 -4
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/index.rst +8 -5
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/provider.yaml +2 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/pyproject.toml +10 -7
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/__init__.py +1 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py +2 -2
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py +4 -4
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/login.py +7 -4
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/user_command.py +1 -2
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/utils.py +7 -3
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/fab_auth_manager.py +15 -11
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/models/__init__.py +179 -122
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/models/db.py +11 -6
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/security_manager/override.py +239 -213
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/views/user.py +11 -5
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/migrations/versions/0001_1_4_0_create_ab_tables_if_missing.py +5 -4
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/app.py +3 -4
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/init_appbuilder.py +26 -39
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/init_session.py +2 -2
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/security_appless.py +6 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/security_manager.py +4 -14
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/session.py +26 -3
- apache_airflow_providers_fab-3.0.0/src/airflow/providers/fab/www/utils.py +86 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api/auth/backend/test_basic_auth.py +1 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api/auth/backend/test_session.py +1 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_endpoints/test_role_and_permission_endpoint.py +24 -29
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_endpoints/test_user_endpoint.py +28 -19
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_fastapi/routes/test_login.py +3 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_fastapi/services/test_login.py +1 -2
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/test_role_command.py +1 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/test_user_command.py +1 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/test_utils.py +2 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/models/test_db.py +3 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/schemas/test_role_and_permission_schema.py +42 -44
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/schemas/test_user_schema.py +16 -9
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/test_fab_auth_manager.py +20 -19
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/test_security.py +9 -23
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/views/test_permissions.py +14 -13
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/views/test_roles_list.py +11 -10
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/views/test_user.py +11 -10
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/views/test_user_edit.py +11 -10
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/views/test_user_stats.py +11 -10
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/www/views/test_views_custom_user_views.py +102 -117
- apache_airflow_providers_fab-3.0.0/www-hash.txt +1 -0
- apache_airflow_providers_fab-2.4.4rc1/src/airflow/providers/fab/www/utils.py +0 -293
- apache_airflow_providers_fab-2.4.4rc1/www-hash.txt +0 -1
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/3rd-party-licenses/LICENSES-ui.txt +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/NOTICE +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/api-ref/fab-public-api-ref.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/api-ref/fab-token-api-ref.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/access-control.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/api-authentication.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/configuring-flask-app.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/index.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/security.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/sso.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/token.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/auth-manager/webserver-authentication.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/cli-ref.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/commits.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/conf.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/img/add-role.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/img/diagram_fab_auth_manager_airflow_architecture.md5sum +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/img/diagram_fab_auth_manager_airflow_architecture.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/img/diagram_fab_auth_manager_airflow_architecture.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/img/new-role.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/migrations-ref.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/security.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/upgrading.rst +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/3rd-party-licenses/LICENSES-ui.txt +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/LICENSE +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/alembic.ini +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api/auth/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/basic_auth.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/kerberos_auth.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api/auth/backend/session.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_endpoints/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/datamodels/login.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/openapi/v2-fab-auth-manager-generated.yaml +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/api_fastapi/services/login.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/db_command.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/definition.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/permissions_command.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/role_command.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/cli_commands/sync_perm_command.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/models/anonymous_user.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/openapi/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/openapi/v1-flask-api.yaml +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/schemas/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/schemas/role_and_permission_schema.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/schemas/user_schema.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/security_manager/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/security_manager/constants.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/views/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/views/permissions.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/views/roles_list.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/views/user_edit.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/auth_manager/views/user_stats.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/get_provider_info.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/migrations/README +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/migrations/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/migrations/env.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/migrations/script.py.mako +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/migrations/versions/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/version_compat.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/airflow_flask_app.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/api_connexion/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/api_connexion/exceptions.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/api_connexion/parameters.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/api_connexion/security.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/api_connexion/types.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/auth.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/constants.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/init_jinja_globals.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/init_manifest_files.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/init_security.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/init_views.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/extensions/init_wsgi_middlewares.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/package-lock.json +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/package.json +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/security/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/security/permissions.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/css/bootstrap-theme.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/css/flash.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/css/loading-dots.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/css/main.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/css/material-icons.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/48f0ea180c40270a5b05.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/649c0b07771e68fafdeb.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/743.fc7a7c6ef9d09365976e.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/743.fc7a7c6ef9d09365976e.js.LICENSE.txt +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.ff5a35f322070b094aa2.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/airflowDefaultTheme.ff5a35f322070b094aa2.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/f7490d556a6c42e49ba4.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/flash.5583a9e0cf11f2be93da.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/flash.5583a9e0cf11f2be93da.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js.LICENSE.txt +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/loadingDots.2e5f555f0753107b0300.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/loadingDots.2e5f555f0753107b0300.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/main.3cf3be1a0c5439bb640d.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/main.3cf3be1a0c5439bb640d.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/main.3cf3be1a0c5439bb640d.js.LICENSE.txt +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/manifest.json +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/materialIcons.3e67dd6fbfcc4f3b5105.css +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/materialIcons.3e67dd6fbfcc4f3b5105.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/moment.9baee5ec3d7639a10897.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/oss-licenses.json +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/dist/runtime.ad800fc1845ad5c6ddeb.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/js/datetime_utils.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/js/main.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/pin_100.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/pin_32.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/sort_asc.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/sort_both.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/static/sort_desc.png +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/airflow/_messages.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/airflow/error.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/airflow/main.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/airflow/traceback.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/appbuilder/flash.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/appbuilder/index.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/appbuilder/navbar.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/appbuilder/navbar_menu.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/templates/appbuilder/navbar_right.html +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/views.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/src/airflow/providers/fab/www/webpack.config.js +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/conftest.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api/auth/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api/auth/backend/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api/auth/backend/test_kerberos_auth.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_endpoints/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_endpoints/api_connexion_utils.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_endpoints/remote_user_api_auth_backend.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_endpoints/test_auth.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_fastapi/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_fastapi/conftest.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_fastapi/routes/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/api_fastapi/services/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/test_db_command.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/test_definition.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/test_permissions_command.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/cli_commands/test_sync_perm_command.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/conftest.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/models/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/models/test_anonymous_user.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/models/test_user_model.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/schemas/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/security_manager/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/security_manager/test_constants.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/security_manager/test_override.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/test_models.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/auth_manager/views/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/db_manager/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/db_manager/test_fab_db_manager.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/decorators.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/plugins/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/plugins/conftest.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/plugins/test_plugin.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/utils.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/www/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/www/test_auth.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/www/test_utils.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/www/views/__init__.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/www/views/conftest.py +0 -0
- {apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/tests/unit/fab/www/views/test_connection_form_fields.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-fab
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.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>
|
|
@@ -21,13 +21,16 @@ 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.
|
|
25
|
-
Requires-Dist: apache-airflow-providers-common-compat>=1.2.
|
|
24
|
+
Requires-Dist: apache-airflow>=3.0.2
|
|
25
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.2.1
|
|
26
26
|
Requires-Dist: blinker>=1.6.2; python_version < '3.13'
|
|
27
27
|
Requires-Dist: flask>=2.2.1,<2.3; python_version < '3.13'
|
|
28
|
-
Requires-Dist: flask-appbuilder==
|
|
28
|
+
Requires-Dist: flask-appbuilder==5.0.0; python_version < '3.13'
|
|
29
29
|
Requires-Dist: flask-login>=0.6.2; python_version < '3.13'
|
|
30
|
-
Requires-Dist: flask-session>=0.
|
|
30
|
+
Requires-Dist: flask-session>=0.8.0; python_version < '3.13'
|
|
31
|
+
Requires-Dist: msgpack>=1.0.0; python_version < '3.13'
|
|
32
|
+
Requires-Dist: flask-sqlalchemy>=3.0.5; python_version < '3.13'
|
|
33
|
+
Requires-Dist: sqlalchemy<2; python_version < '3.13'
|
|
31
34
|
Requires-Dist: flask-wtf>=1.1.0; python_version < '3.13'
|
|
32
35
|
Requires-Dist: connexion[flask]>=2.14.2,<3.0; python_version < '3.13'
|
|
33
36
|
Requires-Dist: jmespath>=0.7.0; python_version < '3.13'
|
|
@@ -36,8 +39,8 @@ Requires-Dist: wtforms>=3.0,<4; python_version < '3.13'
|
|
|
36
39
|
Requires-Dist: flask_limiter>3,<4,!=3.13
|
|
37
40
|
Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos" and ( python_version < '3.13')
|
|
38
41
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
39
|
-
Project-URL: Changelog, https://airflow.
|
|
40
|
-
Project-URL: Documentation, https://airflow.
|
|
42
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0/changelog.html
|
|
43
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0
|
|
41
44
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
42
45
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
43
46
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -69,7 +72,7 @@ Provides-Extra: kerberos
|
|
|
69
72
|
|
|
70
73
|
Package ``apache-airflow-providers-fab``
|
|
71
74
|
|
|
72
|
-
Release: ``
|
|
75
|
+
Release: ``3.0.0``
|
|
73
76
|
|
|
74
77
|
|
|
75
78
|
`Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
|
|
@@ -82,7 +85,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
|
|
|
82
85
|
are in ``airflow.providers.fab`` python package.
|
|
83
86
|
|
|
84
87
|
You can find package information and changelog for the provider
|
|
85
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/
|
|
88
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0/>`_.
|
|
86
89
|
|
|
87
90
|
Installation
|
|
88
91
|
------------
|
|
@@ -103,9 +106,12 @@ PIP package Version required
|
|
|
103
106
|
``apache-airflow-providers-common-compat`` ``>=1.2.1``
|
|
104
107
|
``blinker`` ``>=1.6.2; python_version < "3.13"``
|
|
105
108
|
``flask`` ``>=2.2.1,<2.3; python_version < "3.13"``
|
|
106
|
-
``flask-appbuilder`` ``==
|
|
109
|
+
``flask-appbuilder`` ``==5.0.0; python_version < "3.13"``
|
|
107
110
|
``flask-login`` ``>=0.6.2; python_version < "3.13"``
|
|
108
|
-
``flask-session`` ``>=0.
|
|
111
|
+
``flask-session`` ``>=0.8.0; python_version < "3.13"``
|
|
112
|
+
``msgpack`` ``>=1.0.0; python_version < "3.13"``
|
|
113
|
+
``flask-sqlalchemy`` ``>=3.0.5; python_version < "3.13"``
|
|
114
|
+
``sqlalchemy`` ``<2; python_version < "3.13"``
|
|
109
115
|
``flask-wtf`` ``>=1.1.0; python_version < "3.13"``
|
|
110
116
|
``connexion[flask]`` ``>=2.14.2,<3.0; python_version < "3.13"``
|
|
111
117
|
``jmespath`` ``>=0.7.0; python_version < "3.13"``
|
|
@@ -143,5 +149,5 @@ Extra Dependencies
|
|
|
143
149
|
============ ============================================
|
|
144
150
|
|
|
145
151
|
The changelog for the provider package can be found in the
|
|
146
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/
|
|
152
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0/changelog.html>`_.
|
|
147
153
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-fab``
|
|
25
25
|
|
|
26
|
-
Release: ``
|
|
26
|
+
Release: ``3.0.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/
|
|
39
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0/>`_.
|
|
40
40
|
|
|
41
41
|
Installation
|
|
42
42
|
------------
|
|
@@ -57,9 +57,12 @@ PIP package Version required
|
|
|
57
57
|
``apache-airflow-providers-common-compat`` ``>=1.2.1``
|
|
58
58
|
``blinker`` ``>=1.6.2; python_version < "3.13"``
|
|
59
59
|
``flask`` ``>=2.2.1,<2.3; python_version < "3.13"``
|
|
60
|
-
``flask-appbuilder`` ``==
|
|
60
|
+
``flask-appbuilder`` ``==5.0.0; python_version < "3.13"``
|
|
61
61
|
``flask-login`` ``>=0.6.2; python_version < "3.13"``
|
|
62
|
-
``flask-session`` ``>=0.
|
|
62
|
+
``flask-session`` ``>=0.8.0; python_version < "3.13"``
|
|
63
|
+
``msgpack`` ``>=1.0.0; python_version < "3.13"``
|
|
64
|
+
``flask-sqlalchemy`` ``>=3.0.5; python_version < "3.13"``
|
|
65
|
+
``sqlalchemy`` ``<2; python_version < "3.13"``
|
|
63
66
|
``flask-wtf`` ``>=1.1.0; python_version < "3.13"``
|
|
64
67
|
``connexion[flask]`` ``>=2.14.2,<3.0; python_version < "3.13"``
|
|
65
68
|
``jmespath`` ``>=0.7.0; python_version < "3.13"``
|
|
@@ -97,4 +100,4 @@ Extra Dependencies
|
|
|
97
100
|
============ ============================================
|
|
98
101
|
|
|
99
102
|
The changelog for the provider package can be found in the
|
|
100
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/
|
|
103
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0/changelog.html>`_.
|
{apache_airflow_providers_fab-2.4.4rc1 → apache_airflow_providers_fab-3.0.0}/docs/changelog.rst
RENAMED
|
@@ -20,6 +20,35 @@
|
|
|
20
20
|
Changelog
|
|
21
21
|
---------
|
|
22
22
|
|
|
23
|
+
3.0.0
|
|
24
|
+
.....
|
|
25
|
+
|
|
26
|
+
Breaking changes
|
|
27
|
+
~~~~~~~~~~~~~~~~
|
|
28
|
+
|
|
29
|
+
Migrated to Flask-appbuilder 5 which removed the authentication type ``AUTH_OID``.
|
|
30
|
+
Using the authentication type ``AUTH_OID`` in fab provider is no longer possible.
|
|
31
|
+
Applications using ``AUTH_TYPE = AUTH_OID`` must migrate to ``AUTH_OAUTH``.
|
|
32
|
+
|
|
33
|
+
* ``Upgrade flask-appbuilder to version 5 (#50960)``
|
|
34
|
+
|
|
35
|
+
Features
|
|
36
|
+
~~~~~~~~
|
|
37
|
+
|
|
38
|
+
* ``Support nested groups resolution for LDAP authentication in Fab auth manager``
|
|
39
|
+
|
|
40
|
+
Bug Fixes
|
|
41
|
+
~~~~~~~~~
|
|
42
|
+
|
|
43
|
+
* ``Add 'if_not_exists=True' to FAB migration (#56100)``
|
|
44
|
+
* ``Add if_not_exists to index creation in migrations (#56328)``
|
|
45
|
+
|
|
46
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
47
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
48
|
+
* ``Fix static check error resulting from not rebased change in FAB5 (#56178)``
|
|
49
|
+
* ``Remove placeholder Release Date in changelog and index files (#56056)``
|
|
50
|
+
* ``Prepare fab and amazon providers to release (September 2025) (#56241)``
|
|
51
|
+
|
|
23
52
|
2.4.4
|
|
24
53
|
.....
|
|
25
54
|
|
|
@@ -47,8 +76,6 @@ Doc-only
|
|
|
47
76
|
.....
|
|
48
77
|
|
|
49
78
|
|
|
50
|
-
Release Date: ``|PypiReleaseDate|``
|
|
51
|
-
|
|
52
79
|
Bug Fixes
|
|
53
80
|
~~~~~~~~~
|
|
54
81
|
|
|
@@ -69,8 +96,6 @@ Misc
|
|
|
69
96
|
.....
|
|
70
97
|
|
|
71
98
|
|
|
72
|
-
Release Date: ``|PypiReleaseDate|``
|
|
73
|
-
|
|
74
99
|
Bug Fixes
|
|
75
100
|
~~~~~~~~~
|
|
76
101
|
|
|
@@ -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:
|
|
87
|
+
Release: 3.0.0
|
|
88
88
|
|
|
89
89
|
Provider package
|
|
90
90
|
----------------
|
|
@@ -111,9 +111,12 @@ PIP package Version required
|
|
|
111
111
|
``apache-airflow-providers-common-compat`` ``>=1.2.1``
|
|
112
112
|
``blinker`` ``>=1.6.2; python_version < "3.13"``
|
|
113
113
|
``flask`` ``>=2.2.1,<2.3; python_version < "3.13"``
|
|
114
|
-
``flask-appbuilder`` ``==
|
|
114
|
+
``flask-appbuilder`` ``==5.0.0; python_version < "3.13"``
|
|
115
115
|
``flask-login`` ``>=0.6.2; python_version < "3.13"``
|
|
116
|
-
``flask-session`` ``>=0.
|
|
116
|
+
``flask-session`` ``>=0.8.0; python_version < "3.13"``
|
|
117
|
+
``msgpack`` ``>=1.0.0; python_version < "3.13"``
|
|
118
|
+
``flask-sqlalchemy`` ``>=3.0.5; python_version < "3.13"``
|
|
119
|
+
``sqlalchemy`` ``<2; python_version < "3.13"``
|
|
117
120
|
``flask-wtf`` ``>=1.1.0; python_version < "3.13"``
|
|
118
121
|
``connexion[flask]`` ``>=2.14.2,<3.0; python_version < "3.13"``
|
|
119
122
|
``jmespath`` ``>=0.7.0; python_version < "3.13"``
|
|
@@ -147,5 +150,5 @@ Downloading official packages
|
|
|
147
150
|
You can download officially released packages and verify their checksums and signatures from the
|
|
148
151
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
149
152
|
|
|
150
|
-
* `The apache-airflow-providers-fab
|
|
151
|
-
* `The apache-airflow-providers-fab
|
|
153
|
+
* `The apache-airflow-providers-fab 3.0.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-3.0.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-3.0.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-3.0.0.tar.gz.sha512>`__)
|
|
154
|
+
* `The apache-airflow-providers-fab 3.0.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-3.0.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-3.0.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_fab-3.0.0-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:
|
|
31
|
+
source-date-epoch: 1759212936
|
|
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
|
+
- 3.0.0
|
|
38
39
|
- 2.4.4
|
|
39
40
|
- 2.4.3
|
|
40
41
|
- 2.4.2
|
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-fab"
|
|
28
|
-
version = "
|
|
28
|
+
version = "3.0.0"
|
|
29
29
|
description = "Provider package apache-airflow-providers-fab for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
authors = [
|
|
@@ -56,8 +56,8 @@ license-files = ["NOTICE", "*/LICENSE*"]
|
|
|
56
56
|
# Make sure to run ``prek update-providers-dependencies --all-files``
|
|
57
57
|
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
|
|
58
58
|
dependencies = [
|
|
59
|
-
"apache-airflow>=3.0.
|
|
60
|
-
"apache-airflow-providers-common-compat>=1.2.
|
|
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
63
|
"blinker>=1.6.2; python_version < '3.13'",
|
|
@@ -70,11 +70,14 @@ dependencies = [
|
|
|
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==
|
|
73
|
+
"flask-appbuilder==5.0.0; python_version < '3.13'",
|
|
74
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.
|
|
77
|
+
"flask-session>=0.8.0; python_version < '3.13'",
|
|
78
|
+
"msgpack>=1.0.0; python_version < '3.13'",
|
|
79
|
+
"flask-sqlalchemy>=3.0.5; python_version < '3.13'",
|
|
80
|
+
"sqlalchemy<2; python_version < '3.13'",
|
|
78
81
|
"flask-wtf>=1.1.0; python_version < '3.13'",
|
|
79
82
|
"connexion[flask]>=2.14.2,<3.0; python_version < '3.13'",
|
|
80
83
|
"jmespath>=0.7.0; python_version < '3.13'",
|
|
@@ -130,8 +133,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
130
133
|
apache-airflow-providers-standard = {workspace = true}
|
|
131
134
|
|
|
132
135
|
[project.urls]
|
|
133
|
-
"Documentation" = "https://airflow.
|
|
134
|
-
"Changelog" = "https://airflow.
|
|
136
|
+
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0"
|
|
137
|
+
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.0/changelog.html"
|
|
135
138
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
136
139
|
"Source Code" = "https://github.com/apache/airflow"
|
|
137
140
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "
|
|
32
|
+
__version__ = "3.0.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"3.0.2"
|
|
@@ -72,7 +72,7 @@ def get_role(*, role_name: str) -> APIResponse:
|
|
|
72
72
|
def get_roles(*, order_by: str = "name", limit: int, offset: int | None = None) -> APIResponse:
|
|
73
73
|
"""Get roles."""
|
|
74
74
|
security_manager = cast("FabAuthManager", get_auth_manager()).security_manager
|
|
75
|
-
session = security_manager.
|
|
75
|
+
session = security_manager.session
|
|
76
76
|
total_entries = session.scalars(select(func.count(Role.id))).one()
|
|
77
77
|
direction = desc if order_by.startswith("-") else asc
|
|
78
78
|
to_replace = {"role_id": "id"}
|
|
@@ -99,7 +99,7 @@ def get_roles(*, order_by: str = "name", limit: int, offset: int | None = None)
|
|
|
99
99
|
def get_permissions(*, limit: int, offset: int | None = None) -> APIResponse:
|
|
100
100
|
"""Get permissions."""
|
|
101
101
|
security_manager = cast("FabAuthManager", get_auth_manager()).security_manager
|
|
102
|
-
session = security_manager.
|
|
102
|
+
session = security_manager.session
|
|
103
103
|
total_entries = session.scalars(select(func.count(Action.id))).one()
|
|
104
104
|
query = select(Action)
|
|
105
105
|
actions = session.scalars(query.offset(offset).limit(limit)).all()
|
|
@@ -56,10 +56,10 @@ def get_user(*, username: str) -> APIResponse:
|
|
|
56
56
|
|
|
57
57
|
@requires_access_custom_view("GET", permissions.RESOURCE_USER)
|
|
58
58
|
@format_parameters({"limit": check_limit})
|
|
59
|
-
def get_users(*, limit: int, order_by: str = "id", offset:
|
|
59
|
+
def get_users(*, limit: int, order_by: str = "id", offset: int | None = None) -> APIResponse:
|
|
60
60
|
"""Get users."""
|
|
61
61
|
security_manager = cast("FabAuthManager", get_auth_manager()).security_manager
|
|
62
|
-
session = security_manager.
|
|
62
|
+
session = security_manager.session
|
|
63
63
|
total_entries = session.execute(select(func.count(User.id))).scalar()
|
|
64
64
|
direction = desc if order_by.startswith("-") else asc
|
|
65
65
|
to_replace = {"user_id": "id"}
|
|
@@ -212,7 +212,7 @@ def delete_user(*, username: str) -> APIResponse:
|
|
|
212
212
|
raise NotFound(title="User not found", detail=detail)
|
|
213
213
|
|
|
214
214
|
user.roles = [] # Clear foreign keys on this user first.
|
|
215
|
-
security_manager.
|
|
216
|
-
security_manager.
|
|
215
|
+
security_manager.session.delete(user)
|
|
216
|
+
security_manager.session.commit()
|
|
217
217
|
|
|
218
218
|
return NoContent, HTTPStatus.NO_CONTENT
|
|
@@ -23,6 +23,7 @@ from airflow.api_fastapi.core_api.openapi.exceptions import create_openapi_http_
|
|
|
23
23
|
from airflow.configuration import conf
|
|
24
24
|
from airflow.providers.fab.auth_manager.api_fastapi.datamodels.login import LoginBody, LoginResponse
|
|
25
25
|
from airflow.providers.fab.auth_manager.api_fastapi.services.login import FABAuthManagerLogin
|
|
26
|
+
from airflow.providers.fab.auth_manager.cli_commands.utils import get_application_builder
|
|
26
27
|
|
|
27
28
|
login_router = AirflowRouter(tags=["FabAuthManager"])
|
|
28
29
|
|
|
@@ -35,7 +36,8 @@ login_router = AirflowRouter(tags=["FabAuthManager"])
|
|
|
35
36
|
)
|
|
36
37
|
def create_token(body: LoginBody) -> LoginResponse:
|
|
37
38
|
"""Generate a new API token."""
|
|
38
|
-
|
|
39
|
+
with get_application_builder():
|
|
40
|
+
return FABAuthManagerLogin.create_token(body=body)
|
|
39
41
|
|
|
40
42
|
|
|
41
43
|
@login_router.post(
|
|
@@ -46,6 +48,7 @@ def create_token(body: LoginBody) -> LoginResponse:
|
|
|
46
48
|
)
|
|
47
49
|
def create_token_cli(body: LoginBody) -> LoginResponse:
|
|
48
50
|
"""Generate a new CLI API token."""
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
with get_application_builder():
|
|
52
|
+
return FABAuthManagerLogin.create_token(
|
|
53
|
+
body=body, expiration_time_in_seconds=conf.getint("api_auth", "jwt_cli_expiration_time")
|
|
54
|
+
)
|
|
@@ -144,9 +144,8 @@ def users_delete(args):
|
|
|
144
144
|
@providers_configuration_loaded
|
|
145
145
|
def users_manage_role(args, remove=False):
|
|
146
146
|
"""Delete or appends user roles."""
|
|
147
|
-
user = _find_user(args)
|
|
148
|
-
|
|
149
147
|
with get_application_builder() as appbuilder:
|
|
148
|
+
user = _find_user(args)
|
|
150
149
|
role = appbuilder.sm.find_role(args.role)
|
|
151
150
|
if not role:
|
|
152
151
|
valid_roles = appbuilder.sm.get_all_roles()
|
|
@@ -25,6 +25,7 @@ from os.path import isabs
|
|
|
25
25
|
from typing import TYPE_CHECKING
|
|
26
26
|
|
|
27
27
|
from flask import Flask
|
|
28
|
+
from flask_sqlalchemy import SQLAlchemy
|
|
28
29
|
from sqlalchemy.engine import make_url
|
|
29
30
|
|
|
30
31
|
import airflow
|
|
@@ -39,11 +40,11 @@ if TYPE_CHECKING:
|
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
@cache
|
|
42
|
-
def _return_appbuilder(app: Flask) -> AirflowAppBuilder:
|
|
43
|
+
def _return_appbuilder(app: Flask, db) -> AirflowAppBuilder:
|
|
43
44
|
"""Return an appbuilder instance for the given app."""
|
|
44
45
|
init_appbuilder(app, enable_plugins=False)
|
|
45
46
|
init_plugins(app)
|
|
46
|
-
init_airflow_session_interface(app)
|
|
47
|
+
init_airflow_session_interface(app, db)
|
|
47
48
|
return app.appbuilder # type: ignore[attr-defined]
|
|
48
49
|
|
|
49
50
|
|
|
@@ -63,4 +64,7 @@ def get_application_builder() -> Generator[AirflowAppBuilder, None, None]:
|
|
|
63
64
|
"Please use absolute path such as `sqlite:////tmp/airflow.db`."
|
|
64
65
|
)
|
|
65
66
|
flask_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
|
|
66
|
-
|
|
67
|
+
|
|
68
|
+
db = SQLAlchemy(flask_app)
|
|
69
|
+
yield _return_appbuilder(flask_app, db)
|
|
70
|
+
db.engine.dispose(close=True)
|
|
@@ -26,7 +26,7 @@ from urllib.parse import urljoin
|
|
|
26
26
|
import packaging.version
|
|
27
27
|
from connexion import FlaskApi
|
|
28
28
|
from fastapi import FastAPI
|
|
29
|
-
from flask import Blueprint, g
|
|
29
|
+
from flask import Blueprint, current_app, g
|
|
30
30
|
from sqlalchemy import select
|
|
31
31
|
from sqlalchemy.orm import Session, joinedload
|
|
32
32
|
from starlette.middleware.wsgi import WSGIMiddleware
|
|
@@ -282,7 +282,7 @@ class FabAuthManager(BaseAuthManager[User]):
|
|
|
282
282
|
|
|
283
283
|
def deserialize_user(self, token: dict[str, Any]) -> User:
|
|
284
284
|
with create_session() as session:
|
|
285
|
-
return session.
|
|
285
|
+
return session.scalars(select(User).where(User.id == int(token["sub"]))).one()
|
|
286
286
|
|
|
287
287
|
def serialize_user(self, user: User) -> dict[str, Any]:
|
|
288
288
|
return {"sub": str(user.id)}
|
|
@@ -292,7 +292,7 @@ class FabAuthManager(BaseAuthManager[User]):
|
|
|
292
292
|
user = self.get_user()
|
|
293
293
|
return (
|
|
294
294
|
self.appbuilder
|
|
295
|
-
and self.appbuilder.
|
|
295
|
+
and self.appbuilder.app.config.get("AUTH_ROLE_PUBLIC", None)
|
|
296
296
|
or (not user.is_anonymous and user.is_active)
|
|
297
297
|
)
|
|
298
298
|
|
|
@@ -470,14 +470,18 @@ class FabAuthManager(BaseAuthManager[User]):
|
|
|
470
470
|
return {dag.dag_id for dag in session.execute(select(DagModel.dag_id))}
|
|
471
471
|
if isinstance(user, AnonymousUser):
|
|
472
472
|
return set()
|
|
473
|
-
user_query =
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
473
|
+
user_query = (
|
|
474
|
+
session.scalars(
|
|
475
|
+
select(User)
|
|
476
|
+
.options(
|
|
477
|
+
joinedload(User.roles)
|
|
478
|
+
.subqueryload(Role.permissions)
|
|
479
|
+
.options(joinedload(Permission.action), joinedload(Permission.resource))
|
|
480
|
+
)
|
|
481
|
+
.where(User.id == user.id)
|
|
479
482
|
)
|
|
480
|
-
.
|
|
483
|
+
.unique()
|
|
484
|
+
.one()
|
|
481
485
|
)
|
|
482
486
|
roles = user_query.roles
|
|
483
487
|
|
|
@@ -547,7 +551,7 @@ class FabAuthManager(BaseAuthManager[User]):
|
|
|
547
551
|
if not self.appbuilder:
|
|
548
552
|
raise AirflowException("AppBuilder is not initialized.")
|
|
549
553
|
|
|
550
|
-
sm_from_config =
|
|
554
|
+
sm_from_config = current_app.config.get("SECURITY_MANAGER_CLASS")
|
|
551
555
|
if sm_from_config:
|
|
552
556
|
if not issubclass(sm_from_config, FabAirflowSecurityManagerOverride):
|
|
553
557
|
raise AirflowConfigException(
|