code: def _rename(
      df_obj,
      index_mapper=None,
      columns_mapper=None,
      copy=True,
      inplace=False,
      level=None,
      errors="ignore",
  ):
      if not copy:
          raise NotImplementedError("`copy=False` not implemented")
  
      if index_mapper is not None and errors == "raise" and not inplace:
          warnings.warn(
              "Errors will not raise for non-existing indices"
          )
  
      op = DataFrameRename(
          columns_mapper=columns_mapper,
          index_mapper=index_mapper,
          level=level,
          errors=errors,
          output_types=get_output_types(df_obj),
      )
      ret = op(df_obj)
      if inplace:
          df_obj.data = ret.data
      else:
          return ret
  
imports: import warnings
  from ...None import opcodes
  from ...core import get_output_types, OutputType
  from ...serialization.serializables import AnyField, StringField
  from ..core import SERIES_TYPE
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import build_df, build_series, validate_axis, parse_index
label_desc: Use image node_id 1 for calling a global function with example usage: _rename(df_obj, index_mapper, columns_mapper, copy, inplace, level, errors) and returns: ret