apache-airflow-providers-fab 1.0.2.dev2__py3-none-any.whl → 1.0.3__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.
@@ -27,7 +27,7 @@ import packaging.version
27
27
 
28
28
  __all__ = ["__version__"]
29
29
 
30
- __version__ = "1.0.0"
30
+ __version__ = "1.0.3"
31
31
 
32
32
  try:
33
33
  from airflow import __version__ as airflow_version
@@ -77,8 +77,8 @@ def get_roles(*, order_by: str = "name", limit: int, offset: int | None = None)
77
77
  to_replace = {"role_id": "id"}
78
78
  order_param = order_by.strip("-")
79
79
  order_param = to_replace.get(order_param, order_param)
80
- allowed_filter_attrs = ["role_id", "name"]
81
- if order_by not in allowed_filter_attrs:
80
+ allowed_sort_attrs = ["role_id", "name"]
81
+ if order_by not in allowed_sort_attrs:
82
82
  raise BadRequest(
83
83
  detail=f"Ordering with '{order_by}' is disallowed or "
84
84
  f"the attribute does not exist on the model"
@@ -65,7 +65,7 @@ def get_users(*, limit: int, order_by: str = "id", offset: str | None = None) ->
65
65
  to_replace = {"user_id": "id"}
66
66
  order_param = order_by.strip("-")
67
67
  order_param = to_replace.get(order_param, order_param)
68
- allowed_filter_attrs = [
68
+ allowed_sort_attrs = [
69
69
  "id",
70
70
  "first_name",
71
71
  "last_name",
@@ -74,7 +74,7 @@ def get_users(*, limit: int, order_by: str = "id", offset: str | None = None) ->
74
74
  "is_active",
75
75
  "role",
76
76
  ]
77
- if order_by not in allowed_filter_attrs:
77
+ if order_by not in allowed_sort_attrs:
78
78
  raise BadRequest(
79
79
  detail=f"Ordering with '{order_by}' is disallowed or "
80
80
  f"the attribute does not exist on the model"
@@ -44,7 +44,7 @@ from airflow.cli.cli_config import (
44
44
  GroupCommand,
45
45
  )
46
46
  from airflow.configuration import conf
47
- from airflow.exceptions import AirflowException
47
+ from airflow.exceptions import AirflowConfigException, AirflowException
48
48
  from airflow.models import DagModel
49
49
  from airflow.providers.fab.auth_manager.cli_commands.definition import (
50
50
  ROLES_COMMANDS,
@@ -339,7 +339,7 @@ class FabAuthManager(BaseAuthManager):
339
339
  sm_from_config = self.appbuilder.get_app.config.get("SECURITY_MANAGER_CLASS")
340
340
  if sm_from_config:
341
341
  if not issubclass(sm_from_config, FabAirflowSecurityManagerOverride):
342
- raise Exception(
342
+ raise AirflowConfigException(
343
343
  """Your CUSTOM_SECURITY_MANAGER must extend FabAirflowSecurityManagerOverride."""
344
344
  )
345
345
  return sm_from_config(self.appbuilder)
@@ -810,7 +810,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
810
810
  # LDAP Config
811
811
  if self.auth_type == AUTH_LDAP:
812
812
  if "AUTH_LDAP_SERVER" not in app.config:
813
- raise Exception("No AUTH_LDAP_SERVER defined on config with AUTH_LDAP authentication type.")
813
+ raise ValueError("No AUTH_LDAP_SERVER defined on config with AUTH_LDAP authentication type.")
814
814
  app.config.setdefault("AUTH_LDAP_SEARCH", "")
815
815
  app.config.setdefault("AUTH_LDAP_SEARCH_FILTER", "")
816
816
  app.config.setdefault("AUTH_LDAP_APPEND_DOMAIN", "")
@@ -2212,7 +2212,7 @@ class FabAirflowSecurityManagerOverride(AirflowSecurityManagerV2):
2212
2212
  log.debug("User info from Azure: %s", me)
2213
2213
  # https://learn.microsoft.com/en-us/azure/active-directory/develop/id-token-claims-reference#payload-claims
2214
2214
  return {
2215
- "email": me.get("upn", me["email"]),
2215
+ "email": me["email"] if "email" in me else me["upn"],
2216
2216
  "first_name": me.get("given_name", ""),
2217
2217
  "last_name": me.get("family_name", ""),
2218
2218
  "username": me["oid"],
@@ -28,8 +28,8 @@ def get_provider_info():
28
28
  "name": "Fab",
29
29
  "description": "`Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__\n",
30
30
  "state": "ready",
31
- "source-date-epoch": 1703288133,
32
- "versions": ["1.0.2", "1.0.1", "1.0.0"],
31
+ "source-date-epoch": 1712665766,
32
+ "versions": ["1.0.3", "1.0.2", "1.0.1", "1.0.0"],
33
33
  "dependencies": [
34
34
  "apache-airflow>=2.9.0",
35
35
  "flask>=2.2,<2.3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: apache-airflow-providers-fab
3
- Version: 1.0.2.dev2
3
+ Version: 1.0.3
4
4
  Summary: Provider package apache-airflow-providers-fab for Apache Airflow
5
5
  Keywords: airflow-provider,fab,airflow,integration
6
6
  Author-email: Apache Software Foundation <dev@airflow.apache.org>
@@ -21,14 +21,14 @@ Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
23
  Classifier: Topic :: System :: Monitoring
24
- Requires-Dist: apache-airflow>=2.9.0.dev0
24
+ Requires-Dist: apache-airflow>=2.9.0
25
25
  Requires-Dist: flask-appbuilder==4.4.1
26
26
  Requires-Dist: flask-login>=0.6.2
27
27
  Requires-Dist: flask>=2.2,<2.3
28
28
  Requires-Dist: google-re2>=1.0
29
29
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
30
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.2/changelog.html
31
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.2
30
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.3/changelog.html
31
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.3
32
32
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
33
33
  Project-URL: Source Code, https://github.com/apache/airflow
34
34
  Project-URL: Twitter, https://twitter.com/ApacheAirflow
@@ -78,7 +78,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
78
78
 
79
79
  Package ``apache-airflow-providers-fab``
80
80
 
81
- Release: ``1.0.2.dev2``
81
+ Release: ``1.0.3``
82
82
 
83
83
 
84
84
  `Flask App Builder <https://flask-appbuilder.readthedocs.io/>`__
@@ -91,7 +91,7 @@ This is a provider package for ``fab`` provider. All classes for this provider p
91
91
  are in ``airflow.providers.fab`` python package.
92
92
 
93
93
  You can find package information and changelog for the provider
94
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.2/>`_.
94
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.3/>`_.
95
95
 
96
96
  Installation
97
97
  ------------
@@ -116,4 +116,4 @@ PIP package Version required
116
116
  ==================== ==================
117
117
 
118
118
  The changelog for the provider package can be found in the
119
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.2/changelog.html>`_.
119
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-fab/1.0.3/changelog.html>`_.
@@ -1,16 +1,16 @@
1
1
  airflow/providers/fab/LICENSE,sha256=ywUBpKZc7Jb96rVt5I3IDbg7dIJAbUSHkuoDcF3jbH4,13569
2
- airflow/providers/fab/__init__.py,sha256=i7O17EJB9DcN_BQKB75NJcb0CEYr7Y3gzfZNm2Fpx9s,1578
3
- airflow/providers/fab/get_provider_info.py,sha256=cojfnZKpmibjoYUrcf_Ab4fMZsm16dscFwS5tqU8fNw,2944
2
+ airflow/providers/fab/__init__.py,sha256=OGnINCMJ6f-kH9Q3_ILmQG_IykQZQrpsymUyLCFVxHI,1578
3
+ airflow/providers/fab/get_provider_info.py,sha256=8MX-gZECBDrVBFENTcJ3Co-BDw8kAhO8qWW960Ez8as,2953
4
4
  airflow/providers/fab/auth_manager/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
5
- airflow/providers/fab/auth_manager/fab_auth_manager.py,sha256=det_jvKb0hozwC7XgLgJXjYbdnW58zrtA1k0RhOUWbA,19545
5
+ airflow/providers/fab/auth_manager/fab_auth_manager.py,sha256=e6ZcCGD0tvrXnX8IQJ7rjskCSoKvU2MO06jNr7Ug9LU,19582
6
6
  airflow/providers/fab/auth_manager/api/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
7
7
  airflow/providers/fab/auth_manager/api/auth/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
8
8
  airflow/providers/fab/auth_manager/api/auth/backend/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
9
9
  airflow/providers/fab/auth_manager/api/auth/backend/basic_auth.py,sha256=UBGP5UHV6kNsChvL9rkYOQWHszEJtE4AkSFagcRsqrs,2502
10
10
  airflow/providers/fab/auth_manager/api/auth/backend/kerberos_auth.py,sha256=SvuJ9jo06ZfB_40FUKaiHb8cw2d3Jpxm-YYSOWEzA7I,1712
11
11
  airflow/providers/fab/auth_manager/api_endpoints/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
12
- airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py,sha256=9GRizOLGF5Rsic_42H_gom8LkjVTpvJT0oRxO98lwlw,7556
13
- airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py,sha256=8GfpmpkABVO834Os8rNoH_rqLh4eFz1sfayL1Fwz8FQ,8488
12
+ airflow/providers/fab/auth_manager/api_endpoints/role_and_permission_endpoint.py,sha256=jr-nna1-QLwfquCR0FJcETlQOMC-L1Mhknf2-bvqITw,7552
13
+ airflow/providers/fab/auth_manager/api_endpoints/user_endpoint.py,sha256=TPT4C02jjOXAWI-lOwnaDeS-EEWzJCjQuFVc2E4JsPw,8484
14
14
  airflow/providers/fab/auth_manager/cli_commands/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
15
15
  airflow/providers/fab/auth_manager/cli_commands/definition.py,sha256=hjcb3IL-G1s120UcdOZcV5ssgC7uuTfTmHECGlmr7bk,9075
16
16
  airflow/providers/fab/auth_manager/cli_commands/role_command.py,sha256=4w1tHTR5gBbsymeqGIJ4Rs8CmGdw0l49y58pfI0DB_s,9098
@@ -25,14 +25,14 @@ airflow/providers/fab/auth_manager/openapi/__init__.py,sha256=9hdXHABrVpkbpjZgUf
25
25
  airflow/providers/fab/auth_manager/openapi/v1.yaml,sha256=xFlQMccLoGarx8SnQvGJ1DRfHo4jQ3p9DzoPqQINcCw,19380
26
26
  airflow/providers/fab/auth_manager/security_manager/__init__.py,sha256=mlJxuZLkd5x-iq2SBwD3mvRQpt3YR7wjz_nceyF1IaI,787
27
27
  airflow/providers/fab/auth_manager/security_manager/constants.py,sha256=x1Sjl_Mu3wmaSy3NFZlHxK2z-juzWmMs1SrzJ0aiBBQ,907
28
- airflow/providers/fab/auth_manager/security_manager/override.py,sha256=OMJca7teRJ4ria11J-uAIvipKri7gm-YyG1d9i_MyME,111419
28
+ airflow/providers/fab/auth_manager/security_manager/override.py,sha256=0GPn0Bki3PMf2vCK98HqfoKSnqVPHFQNsO0mIaMhlwA,111437
29
29
  airflow/providers/fab/auth_manager/views/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
30
30
  airflow/providers/fab/auth_manager/views/permissions.py,sha256=k5APUTqqKZqMxCWlKrUEgqdDVrGa9719HJ3UmFpiSLc,2886
31
31
  airflow/providers/fab/auth_manager/views/roles_list.py,sha256=o_VqnLbQa4sisKxLwyx6VCl3HmvjKcjkrJG23R81FMQ,1494
32
32
  airflow/providers/fab/auth_manager/views/user.py,sha256=XsUXXx4qEbZJYMTmWz3R-lpavsUZXvpwKAASHjxceGc,5917
33
33
  airflow/providers/fab/auth_manager/views/user_edit.py,sha256=d8wQ_8Rk8Ce95sCElZIXN7ATwbXrT2Tauqn5uTwuo2E,2140
34
34
  airflow/providers/fab/auth_manager/views/user_stats.py,sha256=zP2eX6e40rpEohJcvnvri4Khu3Q4ULLxjz1zOWvOr8A,1300
35
- apache_airflow_providers_fab-1.0.2.dev2.dist-info/entry_points.txt,sha256=m05kASp7vFi0ZmQ--CFp7GeJpPL7UT2RQF8EEP5XRX8,99
36
- apache_airflow_providers_fab-1.0.2.dev2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
37
- apache_airflow_providers_fab-1.0.2.dev2.dist-info/METADATA,sha256=vG2rgmc1Bf1u2knabEyTHwdsjXrRnDG-UH5vMSm0AkY,4962
38
- apache_airflow_providers_fab-1.0.2.dev2.dist-info/RECORD,,
35
+ apache_airflow_providers_fab-1.0.3.dist-info/entry_points.txt,sha256=m05kASp7vFi0ZmQ--CFp7GeJpPL7UT2RQF8EEP5XRX8,99
36
+ apache_airflow_providers_fab-1.0.3.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
37
+ apache_airflow_providers_fab-1.0.3.dist-info/METADATA,sha256=WHaZf83FvDfQyPRFJjMoGlwkqXfnEZO5tHBS6vOKT-c,4947
38
+ apache_airflow_providers_fab-1.0.3.dist-info/RECORD,,