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"]
code: def complete_multipart_upload(
      self, local_file, upload_id, parts=None, artifact_path=None
  ):
      (container, _, dest_path, _) = self.parse_wasbs_uri(
          self.artifact_uri
      )
      if artifact_path:
          dest_path = posixpath.join(dest_path, artifact_path)
      dest_path = posixpath.join(
          dest_path, os.path.basename(local_file)
      )
  
      block_ids = []
      for part in parts:
          qs = urllib.parse.urlparse(part.url).query
          block_id = urllib.parse.parse_qs(qs)["blockid"][0]
          block_id = decode_base64(urllib.parse.unquote(block_id))
          block_ids.append(block_id)
      blob_client = self.client.get_blob_client(container, dest_path)
      blob_client.commit_block_list(block_ids)
  
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 9 for calling the AzureBlobArtifactRepository obj's underlying member method code with example usage: obj.complete_multipart_upload(local_file, upload_id, parts, artifact_path) without return types