class_docstr: Stores artifacts on Azure Blob Storage.
  
  This repository is used with URIs of the form
  ``wasbs://<container-name>@<ystorage-account-name>.blob.core.windows.net/<path>``,
  following the same URI scheme as Hadoop on Azure blob storage. It requires either that:
  - Azure storage connection string is in the env var ``AZURE_STORAGE_CONNECTION_STRING``
  - Azure storage access key is in the env var ``AZURE_STORAGE_ACCESS_KEY``
  - DefaultAzureCredential is configured
class_docstr_tok: ["Stores","artifacts","on","Azure","Blob","Storage",".","This","repository","is","used","with","URIs","of","the","form","``","wasbs",":","\/\/","<","container-name",">","@","<","ystorage-account-name",">",".blob.core.windows.net\/","<","path",">","``",",","following","the","same","URI","scheme","as","Hadoop","on","Azure","blob","storage",".","It","requires","either","that",":","-","Azure","storage","connection","string","is","in","the","env","var","``","AZURE_STORAGE_CONNECTION_STRING","``","-","Azure","storage","access","key","is","in","the","env","var","``","AZURE_STORAGE_ACCESS_KEY","``","-","DefaultAzureCredential","is","configured"]
docstr: Parse a wasbs:// URI, returning (container, storage_account, path, api_uri_suffix).
docstr_tok: ["Parse","a","wasbs",":","\/\/","URI",",","returning","(","container",",","storage_account",",","path",",","api_uri_suffix",")","."]
code: def parse_wasbs_uri(uri):
      """Parse a wasbs:// URI, returning (container, storage_account, path, api_uri_suffix)."""
      parsed = urllib.parse.urlparse(uri)
      if parsed.scheme != "wasbs":
          raise Exception(f"Not a WASBS URI: {uri}")
  
      match = re.match(
          r"([^@]+)@([^.]+)\.(blob\.core\.(windows\.net|chinacloudapi\.cn))",
          parsed.netloc,
      )
  
      if match is None:
          raise Exception(
              "WASBS URI must be of the form "
              "<container>@<account>.blob.core.windows.net"
              " or <container>@<account>.blob.core.chinacloudapi.cn"
          )
      container = match.group(1)
      storage_account = match.group(2)
      api_uri_suffix = match.group(3)
      path = parsed.path
      if path.startswith("/"):
          path = path[1:]
      return container, storage_account, path, api_uri_suffix
  
imports: import base64
  import datetime
  import os
  import posixpath
  import re
  import urllib.parse
  from typing import Union
  from mlflow.entities import FileInfo
  from mlflow.entities.multipart_upload import CreateMultipartUploadResponse, MultipartUploadCredential
  from mlflow.environment_variables import MLFLOW_ARTIFACT_UPLOAD_DOWNLOAD_TIMEOUT
  from mlflow.exceptions import MlflowException
  from mlflow.store.artifact.artifact_repo import ArtifactRepository, MultipartUploadMixin
  from mlflow.tracking._tracking_service.utils import _get_default_host_creds
label_desc: Use image node_id 2 for calling the AzureBlobArtifactRepository obj's underlying member method code with example usage: obj.parse_wasbs_uri(uri) and returns: container,  storage_account,  path,  api_uri_suffix