code: def __init__(
      self,
      api_url,
      api_key=None,
      folder=None,
      annotation_groups=None,
      asset_store_path="",
      cache_path="",
  ):
      self.api_url = api_url
      self.api_key = api_key
      self.folders = folder.split(",") if folder else []
      self.folders = {f.strip() for f in self.folders}
      self.annotation_groups = (
          [a.lower() if a else a for a in annotation_groups]
          if annotation_groups
          else []
      )
      self.asset_store_path = asset_store_path
  
      uri_hash = md5_digest(api_url)
      self.cache_path = (
          os.path.join(cache_path, uri_hash)
          if cache_path
          else os.path.join(
              pathlib.Path.home(),
              ".cache",
              "monailabel",
              "dsa",
              uri_hash,
          )
      )
  
      logger.info(f"DSA:: Api Url: {api_url}")
      logger.info(
          f"DSA:: Api Key: {'*' * len(api_key) if api_key else ''}"
      )
      logger.info(f"DSA:: Folder (Images): {folder}")
      logger.info(f"DSA:: Annotation Groups: {annotation_groups}")
      logger.info(f"DSA:: Local Asset Store Path: {asset_store_path}")
  
      self.gc = girder_client.GirderClient(apiUrl=api_url)
      if api_key:
          self.gc.authenticate(apiKey=api_key)
  
imports: import logging
  import os
  import pathlib
  from io import BytesIO
  from pathlib import Path
  from typing import Any, Dict, List, Optional
  import girder_client
  import numpy
  from PIL import Image
  from monailabel.interfaces.datastore import Datastore, DefaultLabelTag
  from monailabel.utils.others.generic import md5_digest
label_desc: Use image node_id 1 to create a new DSADatastore object from inherited base classes: Datastore with example: obj = DSADatastore(api_url, api_key, folder, annotation_groups, asset_store_path, cache_path)