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