apache-airflow-providers-fab 2.0.1rc1__py3-none-any.whl → 2.0.2rc2__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__ = "2.0.1"
32
+ __version__ = "2.0.2"
33
33
 
34
34
  if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
35
35
  "3.0.0"
@@ -566,7 +566,7 @@ class FabAuthManager(BaseAuthManager[User]):
566
566
 
567
567
  if details and details.id:
568
568
  # Check whether the user has permissions to access a specific DAG
569
- resource_dag_name = self._resource_name(details.id, RESOURCE_DAG)
569
+ resource_dag_name = permissions.resource_name(details.id, RESOURCE_DAG)
570
570
  return self._is_authorized(method=method, resource_type=resource_dag_name, user=user)
571
571
 
572
572
  return False
@@ -592,7 +592,7 @@ class FabAuthManager(BaseAuthManager[User]):
592
592
 
593
593
  if details and details.id:
594
594
  # Check whether the user has permissions to access a specific DAG Run permission on a DAG Level
595
- resource_dag_name = self._resource_name(details.id, RESOURCE_DAG_RUN)
595
+ resource_dag_name = permissions.resource_name(details.id, RESOURCE_DAG_RUN)
596
596
  return self._is_authorized(method=method, resource_type=resource_dag_name, user=user)
597
597
 
598
598
  return False
@@ -624,19 +624,6 @@ class FabAuthManager(BaseAuthManager[User]):
624
624
  raise AirflowException(f"Unknown DAG access entity: {dag_access_entity}")
625
625
  return _MAP_DAG_ACCESS_ENTITY_TO_FAB_RESOURCE_TYPE[dag_access_entity]
626
626
 
627
- def _resource_name(self, dag_id: str, resource_type: str) -> str:
628
- """
629
- Return the FAB resource name for a DAG id.
630
-
631
- :param dag_id: the DAG id
632
-
633
- :meta private:
634
- """
635
- root_dag_id = self._get_root_dag_id(dag_id)
636
- if hasattr(permissions, "resource_name"):
637
- return getattr(permissions, "resource_name")(root_dag_id, resource_type)
638
- return getattr(permissions, "resource_name_for_dag")(root_dag_id)
639
-
640
627
  @staticmethod
641
628
  def _get_user_permissions(user: User):
642
629
  """
@@ -651,23 +638,6 @@ class FabAuthManager(BaseAuthManager[User]):
651
638
  return []
652
639
  return getattr(user, "perms") or []
653
640
 
654
- def _get_root_dag_id(self, dag_id: str) -> str:
655
- """
656
- Return the root DAG id in case of sub DAG, return the DAG id otherwise.
657
-
658
- :param dag_id: the DAG id
659
-
660
- :meta private:
661
- """
662
- if not self.appbuilder:
663
- raise AirflowException("AppBuilder is not initialized.")
664
-
665
- if "." in dag_id and hasattr(DagModel, "root_dag_id"):
666
- return self.appbuilder.get_session.scalar(
667
- select(DagModel.dag_id, DagModel.root_dag_id).where(DagModel.dag_id == dag_id).limit(1)
668
- )
669
- return dag_id
670
-
671
641
  def _sync_appbuilder_roles(self):
672
642
  """
673
643
  Sync appbuilder roles to DB.
@@ -216,6 +216,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
216
216
  (permissions.ACTION_CAN_READ, RESOURCE_ASSET_ALIAS),
217
217
  (permissions.ACTION_CAN_READ, RESOURCE_BACKFILL),
218
218
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_CLUSTER_ACTIVITY),
219
+ (permissions.ACTION_CAN_READ, permissions.RESOURCE_CONFIG),
219
220
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_POOL),
220
221
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_IMPORT_ERROR),
221
222
  (permissions.ACTION_CAN_READ, permissions.RESOURCE_JOB),
@@ -258,7 +259,6 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
258
259
 
259
260
  # [START security_op_perms]
260
261
  OP_PERMISSIONS = [
261
- (permissions.ACTION_CAN_READ, permissions.RESOURCE_CONFIG),
262
262
  (permissions.ACTION_CAN_ACCESS_MENU, permissions.RESOURCE_ADMIN_MENU),
263
263
  (permissions.ACTION_CAN_ACCESS_MENU, permissions.RESOURCE_CONFIG),
264
264
  (permissions.ACTION_CAN_ACCESS_MENU, permissions.RESOURCE_CONNECTION),
@@ -921,15 +921,14 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
921
921
  dags = dagbag.dags.values()
922
922
 
923
923
  for dag in dags:
924
- root_dag_id = dag.dag_id
925
924
  for resource_name, resource_values in self.RESOURCE_DETAILS_MAP.items():
926
- dag_resource_name = self._resource_name(root_dag_id, resource_name)
925
+ dag_resource_name = permissions.resource_name(dag.dag_id, resource_name)
927
926
  for action_name in resource_values["actions"]:
928
927
  if (action_name, dag_resource_name) not in perms:
929
928
  self._merge_perm(action_name, dag_resource_name)
930
929
 
931
930
  if dag.access_control is not None:
932
- self.sync_perm_for_dag(root_dag_id, dag.access_control)
931
+ self.sync_perm_for_dag(dag.dag_id, dag.access_control)
933
932
 
934
933
  def sync_perm_for_dag(
935
934
  self,
@@ -949,7 +948,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
949
948
  :return:
950
949
  """
951
950
  for resource_name, resource_values in self.RESOURCE_DETAILS_MAP.items():
952
- dag_resource_name = self._resource_name(dag_id, resource_name)
951
+ dag_resource_name = permissions.resource_name(dag_id, resource_name)
953
952
  for dag_action_name in resource_values["actions"]:
954
953
  self.create_permission(dag_action_name, dag_resource_name)
955
954
 
@@ -962,17 +961,6 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
962
961
  dag_id,
963
962
  )
964
963
 
965
- def _resource_name(self, dag_id: str, resource_name: str) -> str:
966
- """
967
- Get the resource name from permissions.
968
-
969
- This method is to keep compatibility with new FAB versions
970
- running with old airflow versions.
971
- """
972
- if hasattr(permissions, "resource_name"):
973
- return getattr(permissions, "resource_name")(dag_id, resource_name)
974
- return getattr(permissions, "resource_name_for_dag")(dag_id)
975
-
976
964
  def _sync_dag_view_permissions(
977
965
  self,
978
966
  dag_id: str,
@@ -1000,7 +988,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
1000
988
 
1001
989
  # Revoking stale permissions for all possible DAG level resources
1002
990
  for resource_name in self.RESOURCE_DETAILS_MAP.keys():
1003
- dag_resource_name = self._resource_name(dag_id, resource_name)
991
+ dag_resource_name = permissions.resource_name(dag_id, resource_name)
1004
992
  if resource := self.get_resource(dag_resource_name):
1005
993
  existing_dag_perms = self.get_resource_permissions(resource)
1006
994
  for perm in existing_dag_perms:
@@ -1043,7 +1031,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
1043
1031
  f"The set of valid resource names is: {self.RESOURCE_DETAILS_MAP.keys()}"
1044
1032
  )
1045
1033
 
1046
- dag_resource_name = self._resource_name(dag_id, resource_name)
1034
+ dag_resource_name = permissions.resource_name(dag_id, resource_name)
1047
1035
  self.log.debug("Syncing DAG-level permissions for DAG '%s'", dag_resource_name)
1048
1036
 
1049
1037
  invalid_actions = set(actions) - self.RESOURCE_DETAILS_MAP[resource_name]["actions"]
@@ -22,7 +22,7 @@
22
22
  "copy-webpack-plugin": "^13.0.0",
23
23
  "css-loader": "7.1.2",
24
24
  "css-minimizer-webpack-plugin": "^7.0.2",
25
- "eslint": "^9.24.0",
25
+ "eslint": "^9.25.1",
26
26
  "eslint-config-prettier": "^10.1.2",
27
27
  "eslint-plugin-html": "^8.1.2",
28
28
  "eslint-plugin-import": "^2.27.5",
@@ -33,10 +33,10 @@
33
33
  "moment": "^2.29.4",
34
34
  "moment-locales-webpack-plugin": "^1.2.0",
35
35
  "prettier": "^3.5.3",
36
- "stylelint": "^16.18.0",
36
+ "stylelint": "^16.19.1",
37
37
  "terser-webpack-plugin": "<6.0.0",
38
38
  "url-loader": "4.1.1",
39
- "webpack": "^5.99.5",
39
+ "webpack": "^5.99.7",
40
40
  "webpack-cli": "^6.0.1",
41
41
  "webpack-license-plugin": "^4.2.1",
42
42
  "webpack-manifest-plugin": "^5.0.1"
@@ -1654,9 +1654,9 @@
1654
1654
  }
1655
1655
  },
1656
1656
  "node_modules/@eslint/config-helpers": {
1657
- "version": "0.2.0",
1658
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
1659
- "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
1657
+ "version": "0.2.1",
1658
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz",
1659
+ "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==",
1660
1660
  "dev": true,
1661
1661
  "license": "Apache-2.0",
1662
1662
  "engines": {
@@ -1664,9 +1664,9 @@
1664
1664
  }
1665
1665
  },
1666
1666
  "node_modules/@eslint/core": {
1667
- "version": "0.12.0",
1668
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
1669
- "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
1667
+ "version": "0.13.0",
1668
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
1669
+ "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
1670
1670
  "dev": true,
1671
1671
  "license": "Apache-2.0",
1672
1672
  "dependencies": {
@@ -1734,9 +1734,9 @@
1734
1734
  }
1735
1735
  },
1736
1736
  "node_modules/@eslint/js": {
1737
- "version": "9.24.0",
1738
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
1739
- "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
1737
+ "version": "9.25.1",
1738
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz",
1739
+ "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==",
1740
1740
  "dev": true,
1741
1741
  "license": "MIT",
1742
1742
  "engines": {
@@ -1754,13 +1754,13 @@
1754
1754
  }
1755
1755
  },
1756
1756
  "node_modules/@eslint/plugin-kit": {
1757
- "version": "0.2.7",
1758
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz",
1759
- "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==",
1757
+ "version": "0.2.8",
1758
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
1759
+ "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
1760
1760
  "dev": true,
1761
1761
  "license": "Apache-2.0",
1762
1762
  "dependencies": {
1763
- "@eslint/core": "^0.12.0",
1763
+ "@eslint/core": "^0.13.0",
1764
1764
  "levn": "^0.4.1"
1765
1765
  },
1766
1766
  "engines": {
@@ -2830,20 +2830,20 @@
2830
2830
  "dev": true
2831
2831
  },
2832
2832
  "node_modules/cacheable": {
2833
- "version": "1.8.9",
2834
- "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz",
2835
- "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==",
2833
+ "version": "1.8.10",
2834
+ "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.10.tgz",
2835
+ "integrity": "sha512-0ZnbicB/N2R6uziva8l6O6BieBklArWyiGx4GkwAhLKhSHyQtRfM9T1nx7HHuHDKkYB/efJQhz3QJ6x/YqoZzA==",
2836
2836
  "dev": true,
2837
2837
  "license": "MIT",
2838
2838
  "dependencies": {
2839
- "hookified": "^1.7.1",
2840
- "keyv": "^5.3.1"
2839
+ "hookified": "^1.8.1",
2840
+ "keyv": "^5.3.2"
2841
2841
  }
2842
2842
  },
2843
2843
  "node_modules/cacheable/node_modules/keyv": {
2844
- "version": "5.3.2",
2845
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz",
2846
- "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==",
2844
+ "version": "5.3.3",
2845
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.3.tgz",
2846
+ "integrity": "sha512-Rwu4+nXI9fqcxiEHtbkvoes2X+QfkTRo1TMkPfwzipGsJlJO/z69vqB4FNl9xJ3xCpAcbkvmEabZfPzrwN3+gQ==",
2847
2847
  "dev": true,
2848
2848
  "license": "MIT",
2849
2849
  "dependencies": {
@@ -3949,20 +3949,20 @@
3949
3949
  }
3950
3950
  },
3951
3951
  "node_modules/eslint": {
3952
- "version": "9.24.0",
3953
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
3954
- "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
3952
+ "version": "9.25.1",
3953
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz",
3954
+ "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==",
3955
3955
  "dev": true,
3956
3956
  "license": "MIT",
3957
3957
  "dependencies": {
3958
3958
  "@eslint-community/eslint-utils": "^4.2.0",
3959
3959
  "@eslint-community/regexpp": "^4.12.1",
3960
3960
  "@eslint/config-array": "^0.20.0",
3961
- "@eslint/config-helpers": "^0.2.0",
3962
- "@eslint/core": "^0.12.0",
3961
+ "@eslint/config-helpers": "^0.2.1",
3962
+ "@eslint/core": "^0.13.0",
3963
3963
  "@eslint/eslintrc": "^3.3.1",
3964
- "@eslint/js": "9.24.0",
3965
- "@eslint/plugin-kit": "^0.2.7",
3964
+ "@eslint/js": "9.25.1",
3965
+ "@eslint/plugin-kit": "^0.2.8",
3966
3966
  "@humanfs/node": "^0.16.6",
3967
3967
  "@humanwhocodes/module-importer": "^1.0.1",
3968
3968
  "@humanwhocodes/retry": "^0.4.2",
@@ -4598,15 +4598,15 @@
4598
4598
  }
4599
4599
  },
4600
4600
  "node_modules/flat-cache": {
4601
- "version": "6.1.7",
4602
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz",
4603
- "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==",
4601
+ "version": "6.1.8",
4602
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.8.tgz",
4603
+ "integrity": "sha512-R6MaD3nrJAtO7C3QOuS79ficm2pEAy++TgEUD8ii1LVlbcgZ9DtASLkt9B+RZSFCzm7QHDMlXPsqqB6W2Pfr1Q==",
4604
4604
  "dev": true,
4605
4605
  "license": "MIT",
4606
4606
  "dependencies": {
4607
4607
  "cacheable": "^1.8.9",
4608
4608
  "flatted": "^3.3.3",
4609
- "hookified": "^1.7.1"
4609
+ "hookified": "^1.8.1"
4610
4610
  }
4611
4611
  },
4612
4612
  "node_modules/flatted": {
@@ -4971,9 +4971,9 @@
4971
4971
  }
4972
4972
  },
4973
4973
  "node_modules/hookified": {
4974
- "version": "1.8.1",
4975
- "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz",
4976
- "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==",
4974
+ "version": "1.8.2",
4975
+ "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.2.tgz",
4976
+ "integrity": "sha512-5nZbBNP44sFCDjSoB//0N7m508APCgbQ4mGGo1KJGBYyCKNHfry1Pvd0JVHZIxjdnqn8nFRBAN/eFB6Rk/4w5w==",
4977
4977
  "dev": true,
4978
4978
  "license": "MIT"
4979
4979
  },
@@ -5743,9 +5743,9 @@
5743
5743
  }
5744
5744
  },
5745
5745
  "node_modules/known-css-properties": {
5746
- "version": "0.35.0",
5747
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz",
5748
- "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==",
5746
+ "version": "0.36.0",
5747
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz",
5748
+ "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==",
5749
5749
  "dev": true,
5750
5750
  "license": "MIT"
5751
5751
  },
@@ -7445,9 +7445,9 @@
7445
7445
  "dev": true
7446
7446
  },
7447
7447
  "node_modules/schema-utils": {
7448
- "version": "4.3.0",
7449
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz",
7450
- "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==",
7448
+ "version": "4.3.2",
7449
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
7450
+ "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
7451
7451
  "dev": true,
7452
7452
  "license": "MIT",
7453
7453
  "dependencies": {
@@ -7882,9 +7882,9 @@
7882
7882
  }
7883
7883
  },
7884
7884
  "node_modules/stylelint": {
7885
- "version": "16.18.0",
7886
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.18.0.tgz",
7887
- "integrity": "sha512-OXb68qzesv7J70BSbFwfK3yTVLEVXiQ/ro6wUE4UrSbKCMjLLA02S8Qq3LC01DxKyVjk7z8xh35aB4JzO3/sNA==",
7885
+ "version": "16.19.1",
7886
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.19.1.tgz",
7887
+ "integrity": "sha512-C1SlPZNMKl+d/C867ZdCRthrS+6KuZ3AoGW113RZCOL0M8xOGpgx7G70wq7lFvqvm4dcfdGFVLB/mNaLFChRKw==",
7888
7888
  "dev": true,
7889
7889
  "funding": [
7890
7890
  {
@@ -7911,7 +7911,7 @@
7911
7911
  "debug": "^4.3.7",
7912
7912
  "fast-glob": "^3.3.3",
7913
7913
  "fastest-levenshtein": "^1.0.16",
7914
- "file-entry-cache": "^10.0.7",
7914
+ "file-entry-cache": "^10.0.8",
7915
7915
  "global-modules": "^2.0.0",
7916
7916
  "globby": "^11.1.0",
7917
7917
  "globjoin": "^0.1.4",
@@ -7919,7 +7919,7 @@
7919
7919
  "ignore": "^7.0.3",
7920
7920
  "imurmurhash": "^0.1.4",
7921
7921
  "is-plain-object": "^5.0.0",
7922
- "known-css-properties": "^0.35.0",
7922
+ "known-css-properties": "^0.36.0",
7923
7923
  "mathml-tag-names": "^2.1.3",
7924
7924
  "meow": "^13.2.0",
7925
7925
  "micromatch": "^4.0.8",
@@ -7988,13 +7988,13 @@
7988
7988
  }
7989
7989
  },
7990
7990
  "node_modules/stylelint/node_modules/file-entry-cache": {
7991
- "version": "10.0.7",
7992
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz",
7993
- "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==",
7991
+ "version": "10.0.8",
7992
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.8.tgz",
7993
+ "integrity": "sha512-FGXHpfmI4XyzbLd3HQ8cbUcsFGohJpZtmQRHr8z8FxxtCe2PcpgIlVLwIgunqjvRmXypBETvwhV4ptJizA+Y1Q==",
7994
7994
  "dev": true,
7995
7995
  "license": "MIT",
7996
7996
  "dependencies": {
7997
- "flat-cache": "^6.1.7"
7997
+ "flat-cache": "^6.1.8"
7998
7998
  }
7999
7999
  },
8000
8000
  "node_modules/stylelint/node_modules/ignore": {
@@ -8603,14 +8603,15 @@
8603
8603
  }
8604
8604
  },
8605
8605
  "node_modules/webpack": {
8606
- "version": "5.99.5",
8607
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.5.tgz",
8608
- "integrity": "sha512-q+vHBa6H9qwBLUlHL4Y7L0L1/LlyBKZtS9FHNCQmtayxjI5RKC9yD8gpvLeqGv5lCQp1Re04yi0MF40pf30Pvg==",
8606
+ "version": "5.99.7",
8607
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.7.tgz",
8608
+ "integrity": "sha512-CNqKBRMQjwcmKR0idID5va1qlhrqVUKpovi+Ec79ksW8ux7iS1+A6VqzfZXgVYCFRKl7XL5ap3ZoMpwBJxcg0w==",
8609
8609
  "dev": true,
8610
8610
  "license": "MIT",
8611
8611
  "dependencies": {
8612
8612
  "@types/eslint-scope": "^3.7.7",
8613
8613
  "@types/estree": "^1.0.6",
8614
+ "@types/json-schema": "^7.0.15",
8614
8615
  "@webassemblyjs/ast": "^1.14.1",
8615
8616
  "@webassemblyjs/wasm-edit": "^1.14.1",
8616
8617
  "@webassemblyjs/wasm-parser": "^1.14.1",
@@ -8627,7 +8628,7 @@
8627
8628
  "loader-runner": "^4.2.0",
8628
8629
  "mime-types": "^2.1.27",
8629
8630
  "neo-async": "^2.6.2",
8630
- "schema-utils": "^4.3.0",
8631
+ "schema-utils": "^4.3.2",
8631
8632
  "tapable": "^2.1.1",
8632
8633
  "terser-webpack-plugin": "^5.3.11",
8633
8634
  "watchpack": "^2.4.1",
@@ -48,7 +48,7 @@
48
48
  "copy-webpack-plugin": "^13.0.0",
49
49
  "css-loader": "7.1.2",
50
50
  "css-minimizer-webpack-plugin": "^7.0.2",
51
- "eslint": "^9.24.0",
51
+ "eslint": "^9.25.1",
52
52
  "eslint-config-prettier": "^10.1.2",
53
53
  "eslint-plugin-html": "^8.1.2",
54
54
  "eslint-plugin-import": "^2.27.5",
@@ -59,10 +59,10 @@
59
59
  "moment": "^2.29.4",
60
60
  "moment-locales-webpack-plugin": "^1.2.0",
61
61
  "prettier": "^3.5.3",
62
- "stylelint": "^16.18.0",
62
+ "stylelint": "^16.19.1",
63
63
  "terser-webpack-plugin": "<6.0.0",
64
64
  "url-loader": "4.1.1",
65
- "webpack": "^5.99.5",
65
+ "webpack": "^5.99.7",
66
66
  "webpack-cli": "^6.0.1",
67
67
  "webpack-license-plugin": "^4.2.1",
68
68
  "webpack-manifest-plugin": "^5.0.1"
@@ -95,32 +95,9 @@ PREFIX_RESOURCES_MAP = {details["prefix"]: resource for resource, details in RES
95
95
 
96
96
 
97
97
  def resource_name(root_dag_id: str, resource: str) -> str:
98
- """
99
- Return the resource name for a DAG id.
100
-
101
- Note that since a sub-DAG should follow the permission of its
102
- parent DAG, you should pass ``DagModel.root_dag_id`` to this function,
103
- for a subdag. A normal dag should pass the ``DagModel.dag_id``.
104
- """
98
+ """Return the resource name for a DAG id."""
105
99
  if root_dag_id in RESOURCE_DETAILS_MAP.keys():
106
100
  return root_dag_id
107
101
  if root_dag_id.startswith(tuple(PREFIX_RESOURCES_MAP.keys())):
108
102
  return root_dag_id
109
103
  return f"{RESOURCE_DETAILS_MAP[resource]['prefix']}{root_dag_id}"
110
-
111
-
112
- def resource_name_for_dag(root_dag_id: str) -> str:
113
- """
114
- Return the resource name for a DAG id.
115
-
116
- Note that since a sub-DAG should follow the permission of its
117
- parent DAG, you should pass ``DagModel.root_dag_id`` to this function,
118
- for a subdag. A normal dag should pass the ``DagModel.dag_id``.
119
-
120
- Note: This function is kept for backwards compatibility.
121
- """
122
- if root_dag_id == RESOURCE_DAG:
123
- return root_dag_id
124
- if root_dag_id.startswith(RESOURCE_DAG_PREFIX):
125
- return root_dag_id
126
- return f"{RESOURCE_DAG_PREFIX}{root_dag_id}"
@@ -70,7 +70,7 @@ class FabIndexView(IndexView):
70
70
  token = get_auth_manager().generate_jwt(g.user)
71
71
  response = make_response(redirect(f"{conf.get('api', 'base_url', fallback='/')}", code=302))
72
72
 
73
- secure = conf.has_option("api", "ssl_cert")
73
+ secure = bool(conf.get("api", "ssl_cert", fallback=""))
74
74
  response.set_cookie(COOKIE_NAME_JWT_TOKEN, token, secure=secure)
75
75
 
76
76
  return response
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-fab
3
- Version: 2.0.1rc1
3
+ Version: 2.0.2rc2
4
4
  Summary: Provider package apache-airflow-providers-fab for Apache Airflow
5
5
  Keywords: airflow-provider,fab,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -22,8 +22,8 @@ Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Topic :: System :: Monitoring
23
23
  License-File: 3rd-party-licenses/LICENSES-ui.txt
24
24
  License-File: NOTICE
25
- Requires-Dist: apache-airflow>=3.0.0rc0
26
- Requires-Dist: apache-airflow-providers-common-compat>=1.2.1rc0
25
+ Requires-Dist: apache-airflow>=3.0.0rc1
26
+ Requires-Dist: apache-airflow-providers-common-compat>=1.2.1rc1
27
27
  Requires-Dist: blinker>=1.6.2
28
28
  Requires-Dist: flask>=2.2.1,<2.3
29
29
  Requires-Dist: flask-appbuilder==4.5.3
@@ -36,8 +36,8 @@ Requires-Dist: werkzeug>=2.2,<4
36
36
  Requires-Dist: wtforms>=3.0,<4
37
37
  Requires-Dist: kerberos>=1.3.0 ; extra == "kerberos"
38
38
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
39
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.1/changelog.html
40
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.1
39
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/changelog.html
40
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2
41
41
  Project-URL: Mastodon, https://fosstodon.org/@airflow
42
42
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
43
43
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -69,7 +69,7 @@ Provides-Extra: kerberos
69
69
 
70
70
  Package ``apache-airflow-providers-fab``
71
71
 
72
- Release: ``2.0.1``
72
+ Release: ``2.0.2``
73
73
 
74
74
 
75
75
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
@@ -82,7 +82,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
82
82
  are in ``airflow.providers.fab`` python package.
83
83
 
84
84
  You can find package information and changelog for the provider
85
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.1/>`_.
85
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/>`_.
86
86
 
87
87
  Installation
88
88
  ------------
@@ -133,5 +133,5 @@ Dependent package
133
133
  ================================================================================================================== =================
134
134
 
135
135
  The changelog for the provider package can be found in the
136
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.1/changelog.html>`_.
136
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/2.0.2/changelog.html>`_.
137
137
 
@@ -1,9 +1,9 @@
1
1
  airflow/providers/fab/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
2
- airflow/providers/fab/__init__.py,sha256=KbbacGY_UmDBwSCzgYNde3-GsIUAq2oNQLVaERkQY7M,1490
2
+ airflow/providers/fab/__init__.py,sha256=FhqpesgH8rXzZCFWzwQHU_EyIobGCvZ_SWN2SbvUhPk,1490
3
3
  airflow/providers/fab/alembic.ini,sha256=_1SvObfjMAkuD7DN5VR2S6Rd7_F81pORZT-w7GJldIA,4461
4
4
  airflow/providers/fab/get_provider_info.py,sha256=I1fRKp4u-vUmSjoVyFmdD_spXfWhmdIqtlnWe2F5m40,5149
5
5
  airflow/providers/fab/auth_manager/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
6
- airflow/providers/fab/auth_manager/fab_auth_manager.py,sha256=4auEloL69uQOkeD1FmNHEqNcgoXm_pjNeyOvQHuTPXc,25779
6
+ airflow/providers/fab/auth_manager/fab_auth_manager.py,sha256=i86cabdyA22N6qtmE0YDhDeBZTVoYhzEJHLS20aYfZU,24749
7
7
  airflow/providers/fab/auth_manager/api/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
8
8
  airflow/providers/fab/auth_manager/api/auth/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
9
9
  airflow/providers/fab/auth_manager/api/auth/backend/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
@@ -39,7 +39,7 @@ airflow/providers/fab/auth_manager/schemas/role_and_permission_schema.py,sha256=
39
39
  airflow/providers/fab/auth_manager/schemas/user_schema.py,sha256=MLnZotQqAg_BFvJunrSwbwur5CaTjk1ww3eCI3aPT6Y,2401
40
40
  airflow/providers/fab/auth_manager/security_manager/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
41
41
  airflow/providers/fab/auth_manager/security_manager/constants.py,sha256=x1Sjl_Mu3wmaSy3NFZlHxK2z-juzWmMs1SrzJ0aiBBQ,907
42
- airflow/providers/fab/auth_manager/security_manager/override.py,sha256=geYJDV4pjlqinNl6gUJqTYbkRm6PP5VbGMvN500kDBY,97105
42
+ airflow/providers/fab/auth_manager/security_manager/override.py,sha256=FJASD5Bi9USIjNDqMgal_PW7zwQ0weCc3hLTbngcAJ4,96637
43
43
  airflow/providers/fab/auth_manager/views/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
44
44
  airflow/providers/fab/auth_manager/views/permissions.py,sha256=CT6jMCDHtirs0Qe4Penb6VwQq1yZeZ1lOLZITIlVqm4,2904
45
45
  airflow/providers/fab/auth_manager/views/roles_list.py,sha256=DwJ1iOCfpbxsWTEFWjW5_Jo3fmrZwxj1rPeflTaSg7A,1512
@@ -57,13 +57,13 @@ airflow/providers/fab/www/airflow_flask_app.py,sha256=-JPQ-mS1kKEj5adENnoVSD4LaF
57
57
  airflow/providers/fab/www/app.py,sha256=RhUCSxS4Sivwu7aeLOqIVADszBh9uWOs1oni99FY9Rk,4951
58
58
  airflow/providers/fab/www/auth.py,sha256=1oLlJybsjOqxhcmD_Rbtcg5nQySmfArJnIw7jq09V18,12615
59
59
  airflow/providers/fab/www/constants.py,sha256=VUg48B-EZAUZ2IIdmL31Iv0lRlP0yLNPNTufB7rsWr0,1352
60
- airflow/providers/fab/www/package-lock.json,sha256=wfidNP3hYpGzqGMWaW-tQaWfI_h_dhAIeHlteba76Gc,328250
61
- airflow/providers/fab/www/package.json,sha256=5EKDjPXa64LlZjb1dwZfJsjD6irMThGh4ln2NLBs68g,2357
60
+ airflow/providers/fab/www/package-lock.json,sha256=3y4hjd70s6mN4F2BL2uj-TUFju-iOslcKeOFGhWcnb4,328293
61
+ airflow/providers/fab/www/package.json,sha256=0iBaCW_DfhW3OBDyeuytFOyOn1VsjLPkquPguT9rw8E,2357
62
62
  airflow/providers/fab/www/security_appless.py,sha256=J0OJGRPq6NK2vY6qfMRvyMUEc-E59vXucquQdjgsndY,1655
63
63
  airflow/providers/fab/www/security_manager.py,sha256=Zr6xqjego7Z1-1h2HHyWLt1ZBKG8yHHmNPfEXNxXaRY,4850
64
64
  airflow/providers/fab/www/session.py,sha256=qyy8ipXLe4qH7D52tH3aKY6hyJNJ5tUfHel7_1S4BGg,1741
65
65
  airflow/providers/fab/www/utils.py,sha256=9D_ESPV6ar5GOenD2Jm-lS7pW78yzxCWC5N-3kgMem8,9982
66
- airflow/providers/fab/www/views.py,sha256=dB7kPNxFhT6nwrPuRbp5Wwebuc0DJemmO2oiCFR_oRI,4746
66
+ airflow/providers/fab/www/views.py,sha256=tVQ9PTcafyoTdMQ5mvmp0kjlVrkC6Zof4yfB9nlz8tE,4758
67
67
  airflow/providers/fab/www/webpack.config.js,sha256=_TYJ8cnmJW0vxb87xY4eNr9ZE7G5NFUPuiXvpF6SKys,6124
68
68
  airflow/providers/fab/www/api_connexion/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
69
69
  airflow/providers/fab/www/api_connexion/exceptions.py,sha256=j0S90JH6Q5hnkshfiZot7Yb9hAvFs1JON0EYjW2bxW0,5783
@@ -78,7 +78,7 @@ airflow/providers/fab/www/extensions/init_security.py,sha256=sDwMjNMMQgyn2tsQAVk
78
78
  airflow/providers/fab/www/extensions/init_session.py,sha256=y8zUVSngawNhkO4egEkhrQ_2v03wCeDjm8LUaNY0sZ8,2637
79
79
  airflow/providers/fab/www/extensions/init_views.py,sha256=4zFnPwFhO3wfqnDDvsRgeU5jjy2JImgMia-flg6BZgQ,6411
80
80
  airflow/providers/fab/www/security/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
81
- airflow/providers/fab/www/security/permissions.py,sha256=5Srt7nuYHOOee439CHKJ74FnCgYkesG32a_6WFCXcOA,4537
81
+ airflow/providers/fab/www/security/permissions.py,sha256=A9WTtY7uUDOOEwIQyVu6h6ql3uFBx2HTxZ10itHJwL4,3741
82
82
  airflow/providers/fab/www/static/sort_asc.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
83
  airflow/providers/fab/www/static/sort_both.png,sha256=PgFsI65RQXOCtkCuLRnrSAR1MsN61TiUvRhVhlWcz_s,201
84
84
  airflow/providers/fab/www/static/sort_desc.png,sha256=0I7Q4h8YfdMJAw1GUiTagIURmhWhfWFroOR3u1DG8Q0,158
@@ -119,9 +119,9 @@ airflow/providers/fab/www/templates/appbuilder/index.html,sha256=ZaZsNdD8fCENqdn
119
119
  airflow/providers/fab/www/templates/appbuilder/navbar.html,sha256=1Q8u90aONY_PKTBtApwyp0EeudSsJyysW2UYo9Fa1cc,10215
120
120
  airflow/providers/fab/www/templates/appbuilder/navbar_menu.html,sha256=WWQ-_QLMqcW4Cpx_1_yulaQO-soD6ztnY2zfmBAUAGI,2034
121
121
  airflow/providers/fab/www/templates/appbuilder/navbar_right.html,sha256=qrwZDBbzLi4yhLrfai842MJDdQ4C31Xz9hJ3NoG5mo0,2488
122
- apache_airflow_providers_fab-2.0.1rc1.dist-info/entry_points.txt,sha256=m05kASp7vFi0ZmQ--CFp7GeJpPL7UT2RQF8EEP5XRX8,99
123
- apache_airflow_providers_fab-2.0.1rc1.dist-info/licenses/3rd-party-licenses/LICENSES-ui.txt,sha256=C9vBr_KiUhI3jjCS754n_SPi-ylD8SiJgXlOWuNOO98,3688
124
- apache_airflow_providers_fab-2.0.1rc1.dist-info/licenses/NOTICE,sha256=GrKwLaFNGIn3J86ucRfNIExRSCD6-7nty84-84F2ad4,448
125
- apache_airflow_providers_fab-2.0.1rc1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
126
- apache_airflow_providers_fab-2.0.1rc1.dist-info/METADATA,sha256=95maNBC0hf98SHHStkIfz4E2faWTB-8tl0Hv_vOGJ8U,6156
127
- apache_airflow_providers_fab-2.0.1rc1.dist-info/RECORD,,
122
+ apache_airflow_providers_fab-2.0.2rc2.dist-info/entry_points.txt,sha256=m05kASp7vFi0ZmQ--CFp7GeJpPL7UT2RQF8EEP5XRX8,99
123
+ apache_airflow_providers_fab-2.0.2rc2.dist-info/licenses/3rd-party-licenses/LICENSES-ui.txt,sha256=C9vBr_KiUhI3jjCS754n_SPi-ylD8SiJgXlOWuNOO98,3688
124
+ apache_airflow_providers_fab-2.0.2rc2.dist-info/licenses/NOTICE,sha256=GrKwLaFNGIn3J86ucRfNIExRSCD6-7nty84-84F2ad4,448
125
+ apache_airflow_providers_fab-2.0.2rc2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
126
+ apache_airflow_providers_fab-2.0.2rc2.dist-info/METADATA,sha256=JD8KwsxWzkrNXJbAGAR28Btz7eQpYzZON0z-ZpI-IWc,6156
127
+ apache_airflow_providers_fab-2.0.2rc2.dist-info/RECORD,,