code: def create_validation(target, args=None, **kwargs):
      if "df" not in kwargs:
          return
      df = kwargs["df"]
      columns = [x.lower() for x in df.columns]
      if target.lower() not in columns:
          raise Exception(f"There is no column '{target}' in dataframe")
  
      if (
          "timeseries_settings" in args
          and args["timeseries_settings"].get("is_timeseries") is True
      ):
          tss = args["timeseries_settings"]
          if (
              "order_by" in tss
              and tss["order_by"].lower() not in columns
          ):
              raise Exception(
                  f"There is no column '{tss['order_by']}' in dataframe"
              )
          if isinstance(tss.get("group_by"), list):
              for column in tss["group_by"]:
                  if column.lower() not in columns:
                      raise Exception(
                          f"There is no column '{column}' in dataframe"
                      )
  
imports: import copy
  import json
  import sys
  from datetime import datetime
  from functools import lru_cache
  from typing import Dict, Optional
  import lightwood
  import numpy
  import pandas
  from type_infer.dtype import dtype
  import mindsdb.interfaces.storage.db
  import mindsdb.utilities.profiler
  from mindsdb.integrations.libs.base import BaseMLEngine
  from mindsdb.interfaces.model.functions import get_model_record
  from mindsdb.interfaces.storage.json import get_json_storage
  from mindsdb.utilities.functions import cast_row_types
  from .functions import run_finetune, run_learn
label_desc: Use image node_id 1 for calling the LightwoodHandler obj's underlying member method code with example usage: obj.create_validation(target, args) without return types