code: def track_to_existing_artifact(
      swagger_client: SwaggerClientWrapper,
      project_id: str,
      path: List[str],
      artifact_hash: str,
      parent_identifier: str,
      entries: List[Tuple[str, Optional[str]]],
      default_request_params: Dict,
      exclude_directory_files: bool,
  ) -> Optional[Operation]:
      files: List[ArtifactFileData] = _extract_file_list(path, entries)
  
      if exclude_directory_files:
          files = _filter_empty_directory_files(files)
  
      if not files:
          raise ArtifactUploadingError("Uploading an empty Artifact")
  
      artifact = create_artifact_version(
          swagger_client=swagger_client,
          project_id=project_id,
          artifact_hash=artifact_hash,
          parent_identifier=parent_identifier,
          files=files,
          default_request_params=default_request_params,
      )
  
      return AssignArtifact(path=path, hash=artifact.hash)
  
imports: from typing import Dict, List, Optional, Tuple, Type
  from bravado.exception import HTTPNotFound
  from neptune.common.backends.utils import with_api_exceptions_handler
  from neptune.exceptions import ArtifactNotFoundException, ArtifactUploadingError, FetchAttributeNotFoundException, NeptuneEmptyLocationException
  from neptune.internal.artifacts.file_hasher import FileHasher
  from neptune.internal.artifacts.types import ArtifactDriver, ArtifactDriversMap, ArtifactFileData
  from neptune.internal.backends.api_model import ArtifactAttribute, ArtifactModel
  from neptune.internal.backends.swagger_client_wrapper import SwaggerClientWrapper
  from neptune.internal.operation import AssignArtifact, Operation
  from neptune.internal.utils.paths import path_to_str
label_desc: Use image node_id 5 for calling a global function with example usage: track_to_existing_artifact(swagger_client, project_id, path, artifact_hash, parent_identifier, entries, default_request_params, exclude_directory_files) and returns: AssignArtifact