code: def _objective_y_info(batch_run):
      objective_spec = batch_run.get("objective") or DEFAULT_OBJECTIVE
      if objective_spec[0] == "-":
          objective_spec = objective_spec[1:]
          y_negate = -1
      else:
          y_negate = 1
      try:
          colspec = qparse.parse_colspec(objective_spec)
      except qparse.ParseError as e:
          raise InvalidObjective(
              f"invalid objective {objective_spec!r}: {e}"
          ) from e
      else:
          if len(colspec.cols) > 1:
              raise InvalidObjective(
                  f"invalid objective {objective_spec!r}: too many columns"
              )
          col = colspec.cols[0]
          prefix, key = col.split_key()
          y_scalar_col = (prefix, key, col.qualifier)
          return y_scalar_col, y_negate
  
imports: import logging
  import os
  import typing
  import warnings
  from guild import _skopt
  from guild import batch_util
  from guild import flag_util
  from guild import op_util
  from guild import query
label_desc: Use image node_id 18 for calling a global function with example usage: _objective_y_info(batch_run) and returns: y_scalar_col,  y_negate