class_docstr: Class that takes care of converting unspecified data blob
  (Dict or List[Dict]) into datapoints (List[Dict]).
  If some properties that are required by Template class are missing
  ('x', 'y') it will attempt to fill in the blanks.
class_docstr_tok: ["Class","that","takes","care","of","converting","unspecified","data","blob","(","Dict","or","List","[","Dict","]",")","into","datapoints","(","List","[","Dict","]",")",".","If","some","properties","that","are","required","by","Template","class","are","missing","(","'","x","'",",","'","y","'",")","it","will","attempt","to","fill","in","the","blanks","."]
code: def infer_y_label(properties):
      y_label = properties.get("y_label", None)
      if y_label is not None:
          return y_label
      y = properties.get("y", None)
      if isinstance(y, str):
          return y
      if isinstance(y, list):
          return "y"
      if not isinstance(y, dict):
          return
  
      fields = {field for _, field in _file_field(y)}
      if len(fields) == 1:
          return first(fields)
      return "y"
  
imports: import os
  from typing import Any, Dict, Iterable, List, Optional, Tuple, Union
  from funcy import first, last
  from dvc.exceptions import DvcException
  from dvc.render import FIELD, FILENAME, INDEX, REVISION
  from .None import Converter
label_desc: Use image node_id 5 for calling the VegaConverter obj's underlying member method code with example usage: obj.infer_y_label(properties) and returns: str, y_label, y, str, first