code: def _download_studio(
      repo_url: str,
      name: str,
      version: Optional[str] = None,
      stage: Optional[str] = None,
      out: Optional[str] = None,
      force: bool = False,
      jobs: Optional[int] = None,
      dvc_studio_config: Optional[Dict[str, Any]] = None,
      **kwargs,
  ) -> Tuple[int, str]:
      from dvc_studio_client.model_registry import get_download_uris
  
      from dvc.fs import HTTPFileSystem, generic, localfs
      from dvc.fs.callbacks import TqdmCallback
  
      logger.debug("Trying to download artifact '%s' via studio", name)
      out = out or os.getcwd()
      to_infos: List[str] = []
      from_infos: List[str] = []
      if dvc_studio_config is None:
          dvc_studio_config = {}
      dvc_studio_config["repo_url"] = repo_url
      try:
          for path, url in get_download_uris(
              repo_url,
              name,
              version=version,
              stage=stage,
              dvc_studio_config=dvc_studio_config,
              **kwargs,
          ).items():
              to_info = localfs.join(out, path)
              if localfs.exists(to_info) and not force:
                  hint = "\nTo override it, re-run with '--force'."
                  raise FileExistsLocallyError(  # noqa: TRY301
                      relpath(to_info), hint=hint
                  )
              to_infos.append(to_info)
              from_infos.append(url)
      except DvcException:
          raise
      except Exception as exc:  # noqa: BLE001
          raise DvcException(
              f"Failed to download artifact '{name}' via Studio"
          ) from exc
      fs = HTTPFileSystem()
      jobs = jobs or fs.jobs
      with TqdmCallback(
          desc=f"Downloading '{name}' from '{repo_url}'",
          unit="files",
      ) as cb:
          cb.set_size(len(from_infos))
          generic.copy(
              fs,
              from_infos,
              localfs,
              to_infos,
              callback=cb,
              batch_size=jobs,
          )
  
      return len(to_infos), relpath(localfs.commonpath(to_infos))
  
imports: import os
  import posixpath
  from pathlib import Path
  from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
  from dvc.annotations import Artifact
  from dvc.dvcfile import PROJECT_FILE
  from dvc.exceptions import ArtifactNotFoundError, DvcException, FileExistsLocallyError, InvalidArgumentError
  from dvc.log import logger
  from dvc.utils import relpath, resolve_output
  from dvc.utils.objects import cached_property
  from dvc.utils.serialize import modify_yaml
label_desc: Use image node_id 8 for calling the Artifacts obj's underlying member method code with example usage: obj._download_studio(repo_url, name, version, stage, out, force, jobs, dvc_studio_config) and returns: len,  relpath