class_docstr: Store and load checkpoints from Azure Blob Storage.
  
  Checkpoints are stored as a collection of Block Blobs,
  with each block blob corresponding to one checkpoint resource.
class_docstr_tok: ["Store","and","load","checkpoints","from","Azure","Blob","Storage",".","Checkpoints","are","stored","as","a","collection","of","Block","Blobs",",","with","each","block","blob","corresponding","to","one","checkpoint","resource","."]
code: def upload(
      self,
      src: Union[str, os.PathLike],
      dst: str,
      paths: Optional[storage.Paths] = None,
  ) -> None:
      src = os.fspath(src)
      logger.info(f"Uploading to Azure Blob Storage: {dst}")
      upload_paths = (
          paths if paths is not None else self._list_directory(src)
      )
      for rel_path in sorted(upload_paths):
          # Use posixpath so that we always use forward slashes, even on Windows.
          container_blob = posixpath.join(self.container, dst, rel_path)
  
          if rel_path.endswith("/"):
              blob_dir, blob_base = posixpath.split(
                  container_blob.rstrip("/")
              )
              blob_base = f"{blob_base}/"
              abs_path = "/dev/null"
              logger.debug(
                  f"Uploading blob empty {blob_base} to container {blob_dir}."
              )
          else:
              blob_dir, blob_base = posixpath.split(container_blob)
              abs_path = os.path.join(src, rel_path)
              logger.debug(
                  f"Uploading blob {blob_base} to container {blob_dir}."
              )
  
          self.client.put(blob_dir, blob_base, abs_path)
  
file_path: determined/harness/determined/common/storage/azure.py
imports: import logging
  import os
  import tempfile
  from typing import Dict, List, Optional, Union
  from determined import errors
  from determined.common import storage, util
  import posixpath
label_desc: Use image node_id 2 for calling the AzureStorageManager obj's underlying member method code with example usage: obj.upload(src, dst, paths) without return types