diff --git a/docs/source/conf.py b/docs/source/conf.py index ee7c1561..1a29b1b4 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -13,7 +13,7 @@ project = 'semantic-link-labs' copyright = '2024, Microsoft and community' author = 'Microsoft and community' -release = '0.9.10' +release = '0.11.3' # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration diff --git a/pyproject.toml b/pyproject.toml index 33a7a91c..1c8c153b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name="semantic-link-labs" authors = [ { name = "Microsoft Corporation" }, ] -version="0.9.10" +version="0.11.3" description="Semantic Link Labs for Microsoft Fabric" readme="README.md" requires-python=">=3.10,<3.12" diff --git a/src/sempy_labs/_authentication.py b/src/sempy_labs/_authentication.py index 914ea39c..3fb96118 100644 --- a/src/sempy_labs/_authentication.py +++ b/src/sempy_labs/_authentication.py @@ -4,6 +4,7 @@ from sempy._utils._log import log from contextlib import contextmanager import contextvars +from sempy.fabric._token_provider import SynapseTokenProvider class ServicePrincipalTokenProvider(TokenProvider): @@ -166,6 +167,20 @@ def _get_headers( token_provider = contextvars.ContextVar("token_provider", default=None) +@contextmanager +def set_sp(token_provider): + prev_func = getattr(SynapseTokenProvider, "__call__") + + def new_call(self, audience='pbi'): + return token_provider(audience=audience) + + setattr(SynapseTokenProvider, "__call__", new_call) + try: + yield + finally: + setattr(SynapseTokenProvider, "__call__", prev_func) + + @log @contextmanager def service_principal_authentication( @@ -201,11 +216,13 @@ def service_principal_authentication( key_vault_client_secret=key_vault_client_secret, ) ) - try: - yield - finally: - # Restore the prior state - if prior_token is None: - token_provider.set(None) - else: - token_provider.set(prior_token) + + with set_sp(token_provider.get()): + try: + yield + finally: + # Restore the prior state + if prior_token is None: + token_provider.set(None) + else: + token_provider.set(prior_token)