docstr: Save a label for the given image id and return the newly saved label's id
  
  :param image_id: the image id for the label
  :param label_filename: the path to the label file
  :param label_tag: the user-provided tag for the label
  :param label_info: additional info for the label
  :return: the label id for the given label filename
docstr_tok: ["Save","a","label","for","the","given","image","id","and","return","the","newly","saved","label","'s","id",":","param","image_id",":","the","image","id","for","the","label",":","param","label_filename",":","the","path","to","the","label","file",":","param","label_tag",":","the","user-provided","tag","for","the","label",":","param","label_info",":","additional","info","for","the","label",":","return",":","the","label","id","for","the","given","label","filename"]
code: def save_label(
      self,
      image_id: str,
      label_filename: str,
      label_tag: str,
      label_info: Dict[str, Any],
  ) -> str:
      """
      Save a label for the given image id and return the newly saved label's id
  
      :param image_id: the image id for the label
      :param label_filename: the path to the label file
      :param label_tag: the user-provided tag for the label
      :param label_info: additional info for the label
      :return: the label id for the given label filename
      """
      pass
  
imports: from abc import ABCMeta, abstractmethod
  from enum import Enum
  from typing import Any, Dict, List, Optional
label_desc: Use image node_id 21 for calling the Datastore obj's underlying member method code with example usage: obj.save_label(image_id, label_filename, label_tag, label_info) without return types