def METHOD_NAME(self) -> azure.BlobServiceClient:
    azure_client: Union[azure.BlobServiceClient, None] = self._azure_client
    if not azure_client:
        _check_config_substitutions_needed(
            self, self.azure_options, raise_warning_if_provider_not_present=True
        )
        # pull in needed config substitutions using the `_config_provider`
        # The `FluentBaseModel.dict()` call will do the config substitution on the serialized dict if a `config_provider` is passed.
        azure_options: dict = self.dict(config_provider=self._config_provider).get(
            "azure_options", {}
        )
        # Thanks to schema validation, we are guaranteed to have one of `conn_str` or `account_url` to
        # use in authentication (but not both). If the format or content of the provided keys is invalid,
        # the assignment of `self._account_name` and `self._azure_client` will fail and an error will be raised.
        conn_str: str | None = azure_options.get("conn_str")
        account_url: str | None = azure_options.get("account_url")
        if not bool(conn_str) ^ bool(account_url):
            raise PandasAzureBlobStorageDatasourceError(
                "You must provide one of `conn_str` or `account_url` to the `azure_options` key in your config (but not both)"
            )
        # Validate that "azure" libararies were successfully imported and attempt to create "azure_client" handle.
        if azure.BlobServiceClient:  # type: ignore[truthy-function] # False if NotImported
            try:
                if conn_str is not None:
                    self._account_name = re.search(  # type: ignore[union-attr]
                        r".*?AccountName=(.+?);.*?", conn_str
                    ).group(1)
                    azure_client = azure.BlobServiceClient.from_connection_string(
                        **azure_options
                    )
                elif account_url is not None:
                    self._account_name = re.search(  # type: ignore[union-attr]
                        r"(?:https?://)?(.+?).blob.core.windows.net", account_url
                    ).group(1)
                    azure_client = azure.BlobServiceClient(**azure_options)
            except Exception as e:
                # Failure to create "azure_client" is most likely due invalid "azure_options" dictionary.
                raise PandasAzureBlobStorageDatasourceError(
                    f'Due to exception: "{e!s}", "azure_client" could not be created.'
                ) from e
        else:
            raise PandasAzureBlobStorageDatasourceError(
                'Unable to create "PandasAzureBlobStorageDatasource" due to missing azure.storage.blob dependency.'
            )
        self._azure_client = azure_client
    if not azure_client:
        raise PandasAzureBlobStorageDatasourceError(
            "Failed to return `azure_client`"
        )
    return azure_client