code: def validate_presence_of_columns(
      df: DataFrame, required_col_names: list[str]
  ) -> None:
      """Validate the presence of column names in a DataFrame.
  
      :param df: A spark DataFrame.
      :type df: DataFrame`
      :param required_col_names: List of the required column names for the DataFrame.
      :type required_col_names: :py:class:`list` of :py:class:`str`
      :return: None.
      :raises DataFrameMissingColumnError: if any of the requested column names are
      not present in the DataFrame.
      """
      all_col_names = df.columns
      missing_col_names = [
          x for x in required_col_names if x not in all_col_names
      ]
      error_message = f"The {missing_col_names} columns are not included in the DataFrame with the following columns {all_col_names}"
      if missing_col_names:
          raise DataFrameMissingColumnError(error_message)
  
file_path: quinn/quinn/dataframe_validator.py
imports: from __future__ import annotations
  import copy
  from typing import TYPE_CHECKING
label_desc: Use image node_id 1 for calling a global function with example usage: validate_presence_of_columns(df, required_col_names) without return types