apache-airflow-providers-fab 3.1.0rc1__py3-none-any.whl → 3.1.1rc1__py3-none-any.whl

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.
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
29
29
 
30
30
  __all__ = ["__version__"]
31
31
 
32
- __version__ = "3.1.0"
32
+ __version__ = "3.1.1"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "3.0.2"
@@ -50,7 +50,11 @@ def cleanup_dag_permissions(dag_id: str, session: Session = NEW_SESSION) -> None
50
50
  from sqlalchemy import delete, select
51
51
 
52
52
  from airflow.providers.fab.auth_manager.models import Permission, Resource, assoc_permission_role
53
- from airflow.security.permissions import RESOURCE_DAG_PREFIX, RESOURCE_DAG_RUN, RESOURCE_DETAILS_MAP
53
+ from airflow.providers.fab.www.security.permissions import (
54
+ RESOURCE_DAG_PREFIX,
55
+ RESOURCE_DAG_RUN,
56
+ RESOURCE_DETAILS_MAP,
57
+ )
54
58
 
55
59
  # Clean up specific DAG permissions
56
60
  dag_resources = session.scalars(
@@ -107,7 +111,7 @@ def permissions_cleanup(args):
107
111
  from airflow.models import DagModel
108
112
  from airflow.providers.fab.auth_manager.cli_commands.utils import get_application_builder
109
113
  from airflow.providers.fab.auth_manager.models import Resource
110
- from airflow.security.permissions import (
114
+ from airflow.providers.fab.www.security.permissions import (
111
115
  RESOURCE_DAG_PREFIX,
112
116
  RESOURCE_DAG_RUN,
113
117
  RESOURCE_DETAILS_MAP,
@@ -101,7 +101,6 @@ from airflow.providers.fab.version_compat import AIRFLOW_V_3_1_PLUS
101
101
  from airflow.providers.fab.www.security import permissions
102
102
  from airflow.providers.fab.www.security_manager import AirflowSecurityManagerV2
103
103
  from airflow.providers.fab.www.session import AirflowDatabaseSessionInterface
104
- from airflow.security.permissions import RESOURCE_BACKFILL
105
104
 
106
105
  if TYPE_CHECKING:
107
106
  from airflow.providers.fab.www.security.permissions import (
@@ -109,7 +108,7 @@ if TYPE_CHECKING:
109
108
  RESOURCE_ASSET_ALIAS,
110
109
  )
111
110
  from airflow.sdk import DAG
112
- from airflow.serialization.serialized_objects import SerializedDAG
111
+ from airflow.serialization.definitions.dag import SerializedDAG
113
112
  else:
114
113
  from airflow.providers.common.compat.security.permissions import (
115
114
  RESOURCE_ASSET,
@@ -236,7 +235,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
236
235
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_DAG_WARNING),
237
236
  (permissions.ACTION_CAN_READ, RESOURCE_ASSET),
238
237
  (permissions.ACTION_CAN_READ, RESOURCE_ASSET_ALIAS),
239
- (permissions.ACTION_CAN_READ, RESOURCE_BACKFILL),
238
+ (permissions.ACTION_CAN_READ, permissions.RESOURCE_BACKFILL),
240
239
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_CLUSTER_ACTIVITY),
241
240
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_POOL),
242
241
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_IMPORT_ERROR),
@@ -308,9 +307,9 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
308
307
  (permissions.ACTION_CAN_DELETE, permissions.RESOURCE_XCOM),
309
308
  (permissions.ACTION_CAN_CREATE, RESOURCE_ASSET),
310
309
  (permissions.ACTION_CAN_DELETE, RESOURCE_ASSET),
311
- (permissions.ACTION_CAN_CREATE, RESOURCE_BACKFILL),
312
- (permissions.ACTION_CAN_EDIT, RESOURCE_BACKFILL),
313
- (permissions.ACTION_CAN_DELETE, RESOURCE_BACKFILL),
310
+ (permissions.ACTION_CAN_CREATE, permissions.RESOURCE_BACKFILL),
311
+ (permissions.ACTION_CAN_EDIT, permissions.RESOURCE_BACKFILL),
312
+ (permissions.ACTION_CAN_DELETE, permissions.RESOURCE_BACKFILL),
314
313
  ]
315
314
  # [END security_op_perms]
316
315
 
@@ -2019,7 +2018,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
2019
2018
  if _provider["name"] == provider:
2020
2019
  return _provider.get("token_secret", "oauth_token_secret")
2021
2020
 
2022
- def auth_user_oauth(self, userinfo):
2021
+ def auth_user_oauth(self, userinfo, rotate_session_id=True):
2023
2022
  """
2024
2023
  Authenticate user with OAuth.
2025
2024
 
@@ -2073,7 +2072,8 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
2073
2072
 
2074
2073
  # LOGIN SUCCESS (only if user is now registered)
2075
2074
  if user:
2076
- self._rotate_session_id()
2075
+ if rotate_session_id:
2076
+ self._rotate_session_id()
2077
2077
  self.update_user_auth_stat(user)
2078
2078
  return user
2079
2079
  return None
@@ -34,3 +34,4 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
34
34
 
35
35
  AIRFLOW_V_3_1_PLUS = get_base_airflow_version_tuple() >= (3, 1, 0)
36
36
  AIRFLOW_V_3_1_1_PLUS = get_base_airflow_version_tuple() >= (3, 1, 1)
37
+ AIRFLOW_V_3_2_PLUS = get_base_airflow_version_tuple() >= (3, 2, 0)
@@ -26,7 +26,7 @@ from connexion.exceptions import BadRequestProblem, ProblemException
26
26
  from flask import request
27
27
 
28
28
  from airflow.api_fastapi.app import get_auth_manager
29
- from airflow.providers.fab.version_compat import AIRFLOW_V_3_1_PLUS
29
+ from airflow.providers.fab.version_compat import AIRFLOW_V_3_1_PLUS, AIRFLOW_V_3_2_PLUS
30
30
  from airflow.providers.fab.www.api_connexion.exceptions import common_error_handler
31
31
 
32
32
  if TYPE_CHECKING:
@@ -102,11 +102,17 @@ def init_plugins(app):
102
102
  """Integrate Flask and FAB with plugins."""
103
103
  from airflow import plugins_manager
104
104
 
105
- plugins_manager.initialize_flask_plugins()
105
+ if AIRFLOW_V_3_2_PLUS:
106
+ blueprints, appbuilder_views, appbuilder_menu_links = plugins_manager.get_flask_plugins()
107
+ else:
108
+ plugins_manager.initialize_flask_plugins() # type: ignore
109
+ blueprints = plugins_manager.flask_blueprints # type: ignore
110
+ appbuilder_views = plugins_manager.flask_appbuilder_views # type: ignore
111
+ appbuilder_menu_links = plugins_manager.flask_appbuilder_menu_links # type: ignore
106
112
 
107
113
  appbuilder = app.appbuilder
108
114
 
109
- for view in plugins_manager.flask_appbuilder_views:
115
+ for view in appbuilder_views:
110
116
  name = view.get("name")
111
117
  if name:
112
118
  filtered_view_kwargs = {k: v for k, v in view.items() if k not in ["view"]}
@@ -124,13 +130,11 @@ def init_plugins(app):
124
130
  # Since Airflow 3.1 flask_appbuilder_menu_links are added to the Airflow 3 UI
125
131
  # navbar..
126
132
  if not AIRFLOW_V_3_1_PLUS:
127
- for menu_link in sorted(
128
- plugins_manager.flask_appbuilder_menu_links, key=lambda x: (x.get("category", ""), x["name"])
129
- ):
133
+ for menu_link in sorted(appbuilder_menu_links, key=lambda x: (x.get("category", ""), x["name"])):
130
134
  log.debug("Adding menu link %s to %s", menu_link["name"], menu_link["href"])
131
135
  appbuilder.add_link(**menu_link)
132
136
 
133
- for blue_print in plugins_manager.flask_blueprints:
137
+ for blue_print in blueprints:
134
138
  log.debug("Adding blueprint %s:%s", blue_print["name"], blue_print["blueprint"].import_name)
135
139
  app.register_blueprint(blue_print["blueprint"])
136
140
 
@@ -21,7 +21,7 @@
21
21
  "clean-webpack-plugin": "^4.0.0",
22
22
  "copy-webpack-plugin": "^13.0.1",
23
23
  "css-loader": "7.1.2",
24
- "css-minimizer-webpack-plugin": "^7.0.2",
24
+ "css-minimizer-webpack-plugin": "^7.0.3",
25
25
  "eslint": "^9.39.1",
26
26
  "eslint-config-prettier": "^10.1.8",
27
27
  "eslint-plugin-html": "^8.1.3",
@@ -32,7 +32,7 @@
32
32
  "mini-css-extract-plugin": "^2.9.4",
33
33
  "moment": "^2.29.4",
34
34
  "moment-locales-webpack-plugin": "^1.2.0",
35
- "prettier": "^3.7.1",
35
+ "prettier": "^3.7.4",
36
36
  "stylelint": "^16.26.1",
37
37
  "terser-webpack-plugin": "<6.0.0",
38
38
  "url-loader": "4.1.1",
@@ -1982,34 +1982,50 @@
1982
1982
  "url": "https://github.com/sponsors/nzakas"
1983
1983
  }
1984
1984
  },
1985
+ "node_modules/@jest/pattern": {
1986
+ "version": "30.0.1",
1987
+ "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz",
1988
+ "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==",
1989
+ "dev": true,
1990
+ "license": "MIT",
1991
+ "dependencies": {
1992
+ "@types/node": "*",
1993
+ "jest-regex-util": "30.0.1"
1994
+ },
1995
+ "engines": {
1996
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1997
+ }
1998
+ },
1985
1999
  "node_modules/@jest/schemas": {
1986
- "version": "29.6.3",
1987
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
1988
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
2000
+ "version": "30.0.5",
2001
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz",
2002
+ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==",
1989
2003
  "dev": true,
2004
+ "license": "MIT",
1990
2005
  "dependencies": {
1991
- "@sinclair/typebox": "^0.27.8"
2006
+ "@sinclair/typebox": "^0.34.0"
1992
2007
  },
1993
2008
  "engines": {
1994
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
2009
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
1995
2010
  }
1996
2011
  },
1997
2012
  "node_modules/@jest/types": {
1998
- "version": "29.6.3",
1999
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
2000
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
2013
+ "version": "30.2.0",
2014
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz",
2015
+ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==",
2001
2016
  "dev": true,
2002
2017
  "license": "MIT",
2003
2018
  "dependencies": {
2004
- "@jest/schemas": "^29.6.3",
2005
- "@types/istanbul-lib-coverage": "^2.0.0",
2006
- "@types/istanbul-reports": "^3.0.0",
2019
+ "@jest/pattern": "30.0.1",
2020
+ "@jest/schemas": "30.0.5",
2021
+ "@types/istanbul-lib-coverage": "^2.0.6",
2022
+ "@types/istanbul-reports": "^3.0.4",
2007
2023
  "@types/node": "*",
2008
- "@types/yargs": "^17.0.8",
2009
- "chalk": "^4.0.0"
2024
+ "@types/yargs": "^17.0.33",
2025
+ "chalk": "^4.1.2"
2010
2026
  },
2011
2027
  "engines": {
2012
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
2028
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
2013
2029
  }
2014
2030
  },
2015
2031
  "node_modules/@jridgewell/gen-mapping": {
@@ -2126,10 +2142,11 @@
2126
2142
  "dev": true
2127
2143
  },
2128
2144
  "node_modules/@sinclair/typebox": {
2129
- "version": "0.27.8",
2130
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
2131
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
2132
- "dev": true
2145
+ "version": "0.34.41",
2146
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz",
2147
+ "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==",
2148
+ "dev": true,
2149
+ "license": "MIT"
2133
2150
  },
2134
2151
  "node_modules/@trysound/sax": {
2135
2152
  "version": "0.2.0",
@@ -2182,13 +2199,15 @@
2182
2199
  "version": "2.0.6",
2183
2200
  "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
2184
2201
  "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
2185
- "dev": true
2202
+ "dev": true,
2203
+ "license": "MIT"
2186
2204
  },
2187
2205
  "node_modules/@types/istanbul-lib-report": {
2188
2206
  "version": "3.0.3",
2189
2207
  "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
2190
2208
  "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
2191
2209
  "dev": true,
2210
+ "license": "MIT",
2192
2211
  "dependencies": {
2193
2212
  "@types/istanbul-lib-coverage": "*"
2194
2213
  }
@@ -2198,6 +2217,7 @@
2198
2217
  "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
2199
2218
  "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
2200
2219
  "dev": true,
2220
+ "license": "MIT",
2201
2221
  "dependencies": {
2202
2222
  "@types/istanbul-lib-report": "*"
2203
2223
  }
@@ -2230,9 +2250,9 @@
2230
2250
  }
2231
2251
  },
2232
2252
  "node_modules/@types/yargs": {
2233
- "version": "17.0.33",
2234
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
2235
- "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
2253
+ "version": "17.0.35",
2254
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
2255
+ "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
2236
2256
  "dev": true,
2237
2257
  "license": "MIT",
2238
2258
  "dependencies": {
@@ -2246,6 +2266,13 @@
2246
2266
  "dev": true,
2247
2267
  "license": "MIT"
2248
2268
  },
2269
+ "node_modules/@ungap/structured-clone": {
2270
+ "version": "1.3.0",
2271
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
2272
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
2273
+ "dev": true,
2274
+ "license": "ISC"
2275
+ },
2249
2276
  "node_modules/@webassemblyjs/ast": {
2250
2277
  "version": "1.14.1",
2251
2278
  "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz",
@@ -3109,9 +3136,9 @@
3109
3136
  }
3110
3137
  },
3111
3138
  "node_modules/ci-info": {
3112
- "version": "3.9.0",
3113
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
3114
- "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
3139
+ "version": "4.3.1",
3140
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz",
3141
+ "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==",
3115
3142
  "dev": true,
3116
3143
  "funding": [
3117
3144
  {
@@ -3119,6 +3146,7 @@
3119
3146
  "url": "https://github.com/sponsors/sibiraj-s"
3120
3147
  }
3121
3148
  ],
3149
+ "license": "MIT",
3122
3150
  "engines": {
3123
3151
  "node": ">=8"
3124
3152
  }
@@ -3364,15 +3392,15 @@
3364
3392
  }
3365
3393
  },
3366
3394
  "node_modules/css-minimizer-webpack-plugin": {
3367
- "version": "7.0.2",
3368
- "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.2.tgz",
3369
- "integrity": "sha512-nBRWZtI77PBZQgcXMNqiIXVshiQOVLGSf2qX/WZfG8IQfMbeHUMXaBWQmiiSTmPJUflQxHjZjzAmuyO7tpL2Jg==",
3395
+ "version": "7.0.3",
3396
+ "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-7.0.3.tgz",
3397
+ "integrity": "sha512-O99EbZ3P9YqfjWPvaL5Ndr54hP1V1N9IRKDLzKpEm1cw5eYF5KTFvz63Wm/AGDz841ceGmLvU1rdN8LrElMIiQ==",
3370
3398
  "dev": true,
3371
3399
  "license": "MIT",
3372
3400
  "dependencies": {
3373
3401
  "@jridgewell/trace-mapping": "^0.3.25",
3374
3402
  "cssnano": "^7.0.4",
3375
- "jest-worker": "^29.7.0",
3403
+ "jest-worker": "^30.0.5",
3376
3404
  "postcss": "^8.4.40",
3377
3405
  "schema-utils": "^4.2.0",
3378
3406
  "serialize-javascript": "^6.0.2"
@@ -5756,37 +5784,62 @@
5756
5784
  "node": ">=0.10.0"
5757
5785
  }
5758
5786
  },
5787
+ "node_modules/jest-regex-util": {
5788
+ "version": "30.0.1",
5789
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz",
5790
+ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==",
5791
+ "dev": true,
5792
+ "license": "MIT",
5793
+ "engines": {
5794
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5795
+ }
5796
+ },
5759
5797
  "node_modules/jest-util": {
5760
- "version": "29.7.0",
5761
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
5762
- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
5798
+ "version": "30.2.0",
5799
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz",
5800
+ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==",
5763
5801
  "dev": true,
5764
5802
  "license": "MIT",
5765
5803
  "dependencies": {
5766
- "@jest/types": "^29.6.3",
5804
+ "@jest/types": "30.2.0",
5767
5805
  "@types/node": "*",
5768
- "chalk": "^4.0.0",
5769
- "ci-info": "^3.2.0",
5770
- "graceful-fs": "^4.2.9",
5771
- "picomatch": "^2.2.3"
5806
+ "chalk": "^4.1.2",
5807
+ "ci-info": "^4.2.0",
5808
+ "graceful-fs": "^4.2.11",
5809
+ "picomatch": "^4.0.2"
5772
5810
  },
5773
5811
  "engines": {
5774
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
5812
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5813
+ }
5814
+ },
5815
+ "node_modules/jest-util/node_modules/picomatch": {
5816
+ "version": "4.0.3",
5817
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
5818
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
5819
+ "dev": true,
5820
+ "license": "MIT",
5821
+ "engines": {
5822
+ "node": ">=12"
5823
+ },
5824
+ "funding": {
5825
+ "url": "https://github.com/sponsors/jonschlinkert"
5775
5826
  }
5776
5827
  },
5777
5828
  "node_modules/jest-worker": {
5778
- "version": "29.7.0",
5779
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
5780
- "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==",
5829
+ "version": "30.2.0",
5830
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz",
5831
+ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==",
5781
5832
  "dev": true,
5833
+ "license": "MIT",
5782
5834
  "dependencies": {
5783
5835
  "@types/node": "*",
5784
- "jest-util": "^29.7.0",
5836
+ "@ungap/structured-clone": "^1.3.0",
5837
+ "jest-util": "30.2.0",
5785
5838
  "merge-stream": "^2.0.0",
5786
- "supports-color": "^8.0.0"
5839
+ "supports-color": "^8.1.1"
5787
5840
  },
5788
5841
  "engines": {
5789
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
5842
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
5790
5843
  }
5791
5844
  },
5792
5845
  "node_modules/jest-worker/node_modules/supports-color": {
@@ -5794,6 +5847,7 @@
5794
5847
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
5795
5848
  "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
5796
5849
  "dev": true,
5850
+ "license": "MIT",
5797
5851
  "dependencies": {
5798
5852
  "has-flag": "^4.0.0"
5799
5853
  },
@@ -7234,9 +7288,9 @@
7234
7288
  }
7235
7289
  },
7236
7290
  "node_modules/prettier": {
7237
- "version": "3.7.1",
7238
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.1.tgz",
7239
- "integrity": "sha512-RWKXE4qB3u5Z6yz7omJkjWwmTfLdcbv44jUVHC5NpfXwFGzvpQM798FGv/6WNK879tc+Cn0AAyherCl1KjbyZQ==",
7291
+ "version": "3.7.4",
7292
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz",
7293
+ "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==",
7240
7294
  "dev": true,
7241
7295
  "license": "MIT",
7242
7296
  "bin": {
@@ -8385,9 +8439,9 @@
8385
8439
  }
8386
8440
  },
8387
8441
  "node_modules/terser-webpack-plugin": {
8388
- "version": "5.3.14",
8389
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
8390
- "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
8442
+ "version": "5.3.15",
8443
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.15.tgz",
8444
+ "integrity": "sha512-PGkOdpRFK+rb1TzVz+msVhw4YMRT9txLF4kRqvJhGhCM324xuR3REBSHALN+l+sAhKUmz0aotnjp5D+P83mLhQ==",
8391
8445
  "dev": true,
8392
8446
  "license": "MIT",
8393
8447
  "dependencies": {
@@ -47,7 +47,7 @@
47
47
  "clean-webpack-plugin": "^4.0.0",
48
48
  "copy-webpack-plugin": "^13.0.1",
49
49
  "css-loader": "7.1.2",
50
- "css-minimizer-webpack-plugin": "^7.0.2",
50
+ "css-minimizer-webpack-plugin": "^7.0.3",
51
51
  "eslint": "^9.39.1",
52
52
  "eslint-config-prettier": "^10.1.8",
53
53
  "eslint-plugin-html": "^8.1.3",
@@ -58,7 +58,7 @@
58
58
  "mini-css-extract-plugin": "^2.9.4",
59
59
  "moment": "^2.29.4",
60
60
  "moment-locales-webpack-plugin": "^1.2.0",
61
- "prettier": "^3.7.1",
61
+ "prettier": "^3.7.4",
62
62
  "stylelint": "^16.26.1",
63
63
  "terser-webpack-plugin": "<6.0.0",
64
64
  "url-loader": "4.1.1",
@@ -71,6 +71,9 @@
71
71
  "jquery-ui": "^1.14.1",
72
72
  "moment-timezone": "^0.6.0"
73
73
  },
74
+ "pnpm": {
75
+ "onlyBuiltDependencies": []
76
+ },
74
77
  "resolutions": {
75
78
  "moment-timezone": ">=0.5.35"
76
79
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-fab
3
- Version: 3.1.0rc1
3
+ Version: 3.1.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>
@@ -40,8 +40,8 @@ Requires-Dist: wtforms>=3.0,<4; python_version < '3.13'
40
40
  Requires-Dist: flask_limiter>3,<4,!=3.13
41
41
  Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos" and ( python_version < '3.13')
42
42
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
43
- Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/3.1.0/changelog.html
44
- Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/3.1.0
43
+ Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/3.1.1/changelog.html
44
+ Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-fab/3.1.1
45
45
  Project-URL: Mastodon, https://fosstodon.org/@airflow
46
46
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
47
47
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -73,7 +73,7 @@ Provides-Extra: kerberos
73
73
 
74
74
  Package ``apache-airflow-providers-fab``
75
75
 
76
- Release: ``3.0.4``
76
+ Release: ``3.1.1``
77
77
 
78
78
 
79
79
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
@@ -86,7 +86,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
86
86
  are in ``airflow.providers.fab`` python package.
87
87
 
88
88
  You can find package information and changelog for the provider
89
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.4/>`_.
89
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.1.1/>`_.
90
90
 
91
91
  Installation
92
92
  ------------
@@ -150,5 +150,5 @@ Extra Dependencies
150
150
  ============ ============================================
151
151
 
152
152
  The changelog for the provider package can be found in the
153
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.0.4/changelog.html>`_.
153
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/3.1.1/changelog.html>`_.
154
154
 
@@ -1,7 +1,7 @@
1
- airflow/providers/fab/__init__.py,sha256=zpH9JYZQE9nVj7DTMO22GcUYrVl5NExRFmOYtvt2XkA,1490
1
+ airflow/providers/fab/__init__.py,sha256=N-QLez-SlMegx-W_X-ytz7Yt2FY4Ze9EI23xdDgWeZA,1490
2
2
  airflow/providers/fab/alembic.ini,sha256=_1SvObfjMAkuD7DN5VR2S6Rd7_F81pORZT-w7GJldIA,4461
3
3
  airflow/providers/fab/get_provider_info.py,sha256=Pf7JwSshIaIanP6bFifJTPNhNexWZNiv4h4usLMfZR4,10635
4
- airflow/providers/fab/version_compat.py,sha256=xPhWGBSbxqecuAGQzj248tvQVOceUeB5vYa1Z5L6y08,1605
4
+ airflow/providers/fab/version_compat.py,sha256=44cHcAEZBYyfS_3AYZFpbDqUZMpGYEOVEIiHwVcWeHI,1672
5
5
  airflow/providers/fab/auth_manager/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
6
6
  airflow/providers/fab/auth_manager/fab_auth_manager.py,sha256=JwwFNe2T9d_hRfGagUe8_dh6OriahBP0QodVAIpzUqE,28867
7
7
  airflow/providers/fab/auth_manager/api/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
@@ -31,7 +31,7 @@ airflow/providers/fab/auth_manager/api_fastapi/services/roles.py,sha256=Mpl1RWP0
31
31
  airflow/providers/fab/auth_manager/cli_commands/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
32
32
  airflow/providers/fab/auth_manager/cli_commands/db_command.py,sha256=SeNg8giLDUX5aniF2XFM7txVQ6N2dDV6BRZnV-UzWX8,2151
33
33
  airflow/providers/fab/auth_manager/cli_commands/definition.py,sha256=qKw6V7htxQPG4DmoRnXtJlm2oK9ec5h5o-cwcErhNkk,12842
34
- airflow/providers/fab/auth_manager/cli_commands/permissions_command.py,sha256=ITn62u5rW2clf_PwupSs4joAlbkAk6w-HHgPHeSgQWo,7715
34
+ airflow/providers/fab/auth_manager/cli_commands/permissions_command.py,sha256=61nj7pl0V8wGmX1RfOZa4xwmEWvaP0jypcPa5DYs3tQ,7784
35
35
  airflow/providers/fab/auth_manager/cli_commands/role_command.py,sha256=4w1tHTR5gBbsymeqGIJ4Rs8CmGdw0l49y58pfI0DB_s,9098
36
36
  airflow/providers/fab/auth_manager/cli_commands/sync_perm_command.py,sha256=VpW-rWhgHAL_ReU66D_BrsxlXQN4okfxzj6dyE5IfwA,1663
37
37
  airflow/providers/fab/auth_manager/cli_commands/user_command.py,sha256=IW_zEVsi6bYdKhHtHDl6HWZQWyrNa7z-lrfOyneA0oo,10276
@@ -46,7 +46,7 @@ airflow/providers/fab/auth_manager/schemas/role_and_permission_schema.py,sha256=
46
46
  airflow/providers/fab/auth_manager/schemas/user_schema.py,sha256=MLnZotQqAg_BFvJunrSwbwur5CaTjk1ww3eCI3aPT6Y,2401
47
47
  airflow/providers/fab/auth_manager/security_manager/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
48
48
  airflow/providers/fab/auth_manager/security_manager/constants.py,sha256=x1Sjl_Mu3wmaSy3NFZlHxK2z-juzWmMs1SrzJ0aiBBQ,907
49
- airflow/providers/fab/auth_manager/security_manager/override.py,sha256=E3gGIYqO17RLrEDfSsyuf7UzMc1jiqbPHgI2ammmvrw,101671
49
+ airflow/providers/fab/auth_manager/security_manager/override.py,sha256=ORq6Kc4Y1qD_gwoJ4HAWGZOWledWztGMqf8BPp1Du70,101719
50
50
  airflow/providers/fab/auth_manager/views/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
51
51
  airflow/providers/fab/auth_manager/views/permissions.py,sha256=CT6jMCDHtirs0Qe4Penb6VwQq1yZeZ1lOLZITIlVqm4,2904
52
52
  airflow/providers/fab/auth_manager/views/roles_list.py,sha256=DwJ1iOCfpbxsWTEFWjW5_Jo3fmrZwxj1rPeflTaSg7A,1512
@@ -64,8 +64,8 @@ airflow/providers/fab/www/airflow_flask_app.py,sha256=1-UxOtcu9DZfjUDRc-pJWsa6NG
64
64
  airflow/providers/fab/www/app.py,sha256=6zdbMb64Pnk9JmckqjWnUQFJOkCIsjNpYjyhRiw88C4,5546
65
65
  airflow/providers/fab/www/auth.py,sha256=KfxXu5Gnawdukifnay9QRz46iOgMWIaKjHuYyp_aXKc,11881
66
66
  airflow/providers/fab/www/constants.py,sha256=UaDdEt_JsqcMYAMn0s9VBvVTKnRoLrvc2Ii59iOg5iQ,1346
67
- airflow/providers/fab/www/package-lock.json,sha256=luxwmizWvBSAYyliQEpVdUt7SOxb0iEIB8ZI88djvNQ,333118
68
- airflow/providers/fab/www/package.json,sha256=N9IRRaHaalYOSRk2g539UT0fE5tB5wcnphi2xKq42sA,2355
67
+ airflow/providers/fab/www/package-lock.json,sha256=oi-5IIG7CCsCK2L_7l1yS3xE1ovhPDG83_K7nLI2YVo,335150
68
+ airflow/providers/fab/www/package.json,sha256=Y07Nw7ZUslz7VbM6idKSdbv2Bgj6LRYQhElf3HhnvP4,2404
69
69
  airflow/providers/fab/www/security_appless.py,sha256=B4O75J2UnIKkfXzAMuSQqDifn_N8vD7cjHMYI1udg40,1750
70
70
  airflow/providers/fab/www/security_manager.py,sha256=qJXN2oGZ38NCfUlYsqYaiQvrMKgqbkkciS8W7_5aZ2k,4360
71
71
  airflow/providers/fab/www/session.py,sha256=s6xhnM3XrG5JiuWA0r-L3XfJI0T4nef5lK7CusgHrio,2277
@@ -83,7 +83,7 @@ airflow/providers/fab/www/extensions/init_jinja_globals.py,sha256=vSqaURrIeO4olK
83
83
  airflow/providers/fab/www/extensions/init_manifest_files.py,sha256=DLeAcH2zMGbT-eDLYdXztP7HJG7H-e1jmSTolimZeAI,2125
84
84
  airflow/providers/fab/www/extensions/init_security.py,sha256=F--OZybtL8XaNVDS7hvycVY9eeVa966XoJCzcJl_jRY,1573
85
85
  airflow/providers/fab/www/extensions/init_session.py,sha256=2E3gQaB9Qi_LGOBxrHbNLs6SYsbabUVDmxXsEBKZSh0,2643
86
- airflow/providers/fab/www/extensions/init_views.py,sha256=FBCA0-byJznoqr-3MkhK4JAK2JCeuO9WLbvB8OZSQhg,6627
86
+ airflow/providers/fab/www/extensions/init_views.py,sha256=rg7X_mkoyIytvAscRxI_scz4WRxx6UGMBIlHcaot2ys,6958
87
87
  airflow/providers/fab/www/extensions/init_wsgi_middlewares.py,sha256=iowTu9y01569ny9yEV-g2PAzVgZfUs5V1IR249aAKFc,1648
88
88
  airflow/providers/fab/www/security/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
89
89
  airflow/providers/fab/www/security/permissions.py,sha256=4KGbVMa-esvxVcq8aYR29vhB_DU-xtAgToDAyi9uV6I,3698
@@ -131,10 +131,10 @@ airflow/providers/fab/www/templates/appbuilder/index.html,sha256=ZaZsNdD8fCENqdn
131
131
  airflow/providers/fab/www/templates/appbuilder/navbar.html,sha256=1Q8u90aONY_PKTBtApwyp0EeudSsJyysW2UYo9Fa1cc,10215
132
132
  airflow/providers/fab/www/templates/appbuilder/navbar_menu.html,sha256=WWQ-_QLMqcW4Cpx_1_yulaQO-soD6ztnY2zfmBAUAGI,2034
133
133
  airflow/providers/fab/www/templates/appbuilder/navbar_right.html,sha256=qrwZDBbzLi4yhLrfai842MJDdQ4C31Xz9hJ3NoG5mo0,2488
134
- apache_airflow_providers_fab-3.1.0rc1.dist-info/entry_points.txt,sha256=m05kASp7vFi0ZmQ--CFp7GeJpPL7UT2RQF8EEP5XRX8,99
135
- apache_airflow_providers_fab-3.1.0rc1.dist-info/licenses/3rd-party-licenses/LICENSES-ui.txt,sha256=C9vBr_KiUhI3jjCS754n_SPi-ylD8SiJgXlOWuNOO98,3688
136
- apache_airflow_providers_fab-3.1.0rc1.dist-info/licenses/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
137
- apache_airflow_providers_fab-3.1.0rc1.dist-info/licenses/NOTICE,sha256=GrKwLaFNGIn3J86ucRfNIExRSCD6-7nty84-84F2ad4,448
138
- apache_airflow_providers_fab-3.1.0rc1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
139
- apache_airflow_providers_fab-3.1.0rc1.dist-info/METADATA,sha256=wE08ReRliDACLV2Yktonl13HbX17Xsy6K30X4vEy0s0,7547
140
- apache_airflow_providers_fab-3.1.0rc1.dist-info/RECORD,,
134
+ apache_airflow_providers_fab-3.1.1rc1.dist-info/entry_points.txt,sha256=m05kASp7vFi0ZmQ--CFp7GeJpPL7UT2RQF8EEP5XRX8,99
135
+ apache_airflow_providers_fab-3.1.1rc1.dist-info/licenses/3rd-party-licenses/LICENSES-ui.txt,sha256=C9vBr_KiUhI3jjCS754n_SPi-ylD8SiJgXlOWuNOO98,3688
136
+ apache_airflow_providers_fab-3.1.1rc1.dist-info/licenses/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
137
+ apache_airflow_providers_fab-3.1.1rc1.dist-info/licenses/NOTICE,sha256=GrKwLaFNGIn3J86ucRfNIExRSCD6-7nty84-84F2ad4,448
138
+ apache_airflow_providers_fab-3.1.1rc1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
139
+ apache_airflow_providers_fab-3.1.1rc1.dist-info/METADATA,sha256=DzoG9QO76AuCUdjn6hoFyXLRjnrsBHW58utclzNc94Y,7547
140
+ apache_airflow_providers_fab-3.1.1rc1.dist-info/RECORD,,