code: def __init__(
      self,
      src: Union[str, List[str]],
      dest: str,
      *,
      treat_dest_as: str = INFER_DEST,
  ):
      if treat_dest_as not in (
          Transfer.DEST_DIR,
          Transfer.DEST_IS_TARGET,
          Transfer.INFER_DEST,
      ):
          raise ValueError(f"treat_dest_as invalid: {treat_dest_as}")
  
      if treat_dest_as == Transfer.DEST_IS_TARGET and isinstance(
          src, list
      ):
          raise NotADirectoryError(dest)
      if treat_dest_as == Transfer.INFER_DEST and dest.endswith("/"):
          treat_dest_as = Transfer.DEST_DIR
  
      self.src = src
      self.dest = dest
      self.treat_dest_as = treat_dest_as
  
imports: from typing import Any, AsyncIterator, Awaitable, Optional, List, Union, Dict, Callable, Tuple
  import os
  import os.path
  import asyncio
  import functools
  import humanize
  from ...utils import retry_transient_errors, url_basename, url_join, bounded_gather2, time_msecs, humanize_timedelta_msecs
  from ..weighted_semaphore import WeightedSemaphore
  from .exceptions import FileAndDirectoryError, UnexpectedEOFError
  from .fs import MultiPartCreate, FileStatus, AsyncFS, FileListEntry
label_desc: Use image node_id 1 to create a new Transfer object  with example: obj = Transfer(src, dest)