docs: def GetArtifactDependencies(rdf_artifact, recursive=False, depth=1):
    """Return a set of artifact dependencies.
  
    Args:
      rdf_artifact: RDF object artifact.
      recursive: If True recurse into dependencies to find their dependencies.
      depth: Used for limiting recursion depth.
  
    Returns:
      A set of strings containing the dependent artifact names.
  
    Raises:
      RuntimeError: If maximum recursion depth reached.
    """
    deps = set()
    for source in rdf_artifact.sources:
      # ARTIFACT is the legacy name for ARTIFACT_GROUP
      # per: https://github.com/ForensicArtifacts/artifacts/pull/143
      # TODO(user): remove legacy support after migration.
      if source.type in (rdf_artifacts.ArtifactSource.SourceType.ARTIFACT,
                         rdf_artifacts.ArtifactSource.SourceType.ARTIFACT_GROUP):
        if source.attributes.GetItem("names"):
          deps.update(source.attributes.GetItem("names"))
  
    if depth > 10:
      raise RuntimeError("Max artifact recursion depth reached.")
  
    deps_set = set(deps)
    if recursive:
      for dep in deps:
        artifact_obj = REGISTRY.GetArtifact(dep)
        new_dep = GetArtifactDependencies(artifact_obj, True, depth=depth + 1)
        if new_dep:
          deps_set.update(new_dep)
  
    return deps_set