code: def parse_paths(default_src_prefix, paths, dest_prefix):
      """Parse user given paths. Checks only source paths and destination are valid
  
      Parameters
      ----------
      default_src_prefix : str
          default directory prefix to append if source path is not an absolute path
      paths : list
          list of absolute or relative filepaths and/or dirpaths to collect with destination names
          (e.g. "/path/to/file>hello", "/path/to/file2", "/path/to/dir>newdir")
      dest_prefix : str
          destination directory prefix to append to the destination filename
  
      Returns
      -------
      files : list
          list of file tuples of the form (absolute_source_path, absolute_dest_filepath)
      directories : list
          list of directory tuples of the form (absolute_source_path, absolute_dest_filepath)
      files_rel : list
          list of file tuples of the form (absolute_source_path, relative_dest_path)
      directories_rel : list
          list of directory tuples of the form (absolute_source_path, relative_dest_path)
  
      Raises
      ------
      InvalidDestinationName
          destination specified in paths is not valid
      PathDoesNotExist
          if the path does not exist
      """
      files, files_rel, directories, directories_rel = [], [], [], []
      for path in paths:
          src_path, dest_name = parse_path(path)
          # For dest_name, append the dest_prefix
          dest_abs_path = os.path.join(dest_prefix, dest_name)
          # For src_path if not absolute, append the default src_prefix
          if not os.path.isabs(path):
              src_abs_path = os.path.join(default_src_prefix, src_path)
          else:
              src_abs_path = src_path
          # Check if source is file or directory and save accordingly
          if os.path.isfile(src_abs_path):
              files.append((src_abs_path, dest_abs_path))
              files_rel.append((src_abs_path, dest_name))
          elif os.path.isdir(src_abs_path):
              directories.append((src_abs_path, dest_abs_path))
              directories_rel.append((src_abs_path, dest_name))
          else:
              raise PathDoesNotExist(src_abs_path)
      return files, directories, files_rel, directories_rel
  
imports: import os
  import re
  import ast
  import hashlib
  import textwrap
  import datetime
  import pytz
  import tzlocal
  import pytest
  import collections
  import platform
  import tempfile
  import subprocess
  import zipfile
  import sys
  import shutil
  import requests
  from enum import Enum
  from io import open
  from glob import glob
  from datmo.core.controller.environment.driver.dockerenv import DockerEnvironmentDriver
  from datmo.core.util.i18n import get
  from datmo.core.util.exceptions import PathDoesNotExist, MutuallyExclusiveArguments, RequiredArgumentMissing, EnvironmentConnectFailed, EnvironmentExecutionError, InvalidDestinationName, TooManyArgumentsFound
label_desc: Use image node_id 21 for calling a global function with example usage: parse_paths(default_src_prefix, paths, dest_prefix) and returns: files,  directories,  files_rel,  directories_rel