code: def _fetch_local_version(
      asset_name: str, local_name: str
  ) -> Dict[str, str]:
      if os.path.exists(local_name):
          logger.debug(
              "Asset is a valid local path relative to ASSETS_DIR",
              local_name=local_name,
          )
          # if the asset spec resolves to MODELKIT_ASSETS_DIR/asset_name
          return {"path": local_name}
  
      path = os.path.join(os.getcwd(), *asset_name.split("/"))
      if os.path.exists(path):
          logger.debug(
              "Asset is a valid relative local path", local_name=path
          )
          # if the asset spec resolves to cwd/asset_name
          return {"path": path}
  
      if os.path.exists(asset_name):
          logger.debug(
              "Asset is a valid absolute local path", local_name=path
          )
          # if the asset spec is a valid absolute path
          return {"path": asset_name}
  
      raise errors.AssetDoesNotExistError(asset_name)
  
imports: import os
  import shutil
  import typing
  from typing import Any, Dict, List, Optional, Union, cast
  import filelock
  from structlog import get_logger
  from modelkit.assets import errors
  from modelkit.assets.drivers.local import LocalStorageDriver
  from modelkit.assets.remote import NoConfiguredProviderError, StorageProvider
  from modelkit.assets.settings import AssetSpec
  from modelkit.utils.logging import ContextualizedLogging
label_desc: Use image node_id 3 for calling a global function with example usage: _fetch_local_version(asset_name, local_name) and returns: dict, dict, dict