code: def analyze(to_process: FeatureToProcess, feature_dict: dict):
      compare_dict = feature_dict.get("compare")
      feature_dict["stats"] = dict()
      if compare_dict:
          compare_dict["stats"] = dict()
  
      do_detail_categorical(to_process, feature_dict)
  
      feature_dict["minigraph"] = GraphCat("mini", to_process)
      feature_dict["detail_graphs"] = list()
      feature_dict["detail_graphs"].append(
          GraphCat("detail", to_process)
      )
  
      if to_process.is_target():
          feature_dict[
              "html_summary"
          ] = sv_html.generate_html_summary_target_cat(
              feature_dict, compare_dict
          )
      else:
          feature_dict[
              "html_summary"
          ] = sv_html.generate_html_summary_cat(
              feature_dict, compare_dict
          )
  
      return
  
file_path: sweetviz/sweetviz/series_analyzer_cat.py
imports: from sweetviz.config import config
  from sweetviz.sv_types import NumWithPercent, FeatureType, FeatureToProcess
  from sweetviz.graph_cat import GraphCat
  import sweetviz.sv_html
  import sweetviz.utils
  from sweetviz.sv_types import OTHERS_GROUPED
label_desc: Use image node_id 2 for calling a global function with example usage: analyze(to_process, feature_dict) without return types