code: def unicode_summary_vc(vc: pd.Series) -> dict:
      try:
          from tangled_up_in_unicode import (  # type: ignore
              block,
              block_abbr,
              category,
              category_long,
              script,
          )
      except ImportError:
          from unicodedata import (
              category as _category,
          )  # pylint: disable=import-error
  
          category = _category  # type: ignore
          char_handler = lambda char: "(unknown)"  # noqa: E731
          block = char_handler
          block_abbr = char_handler
          category_long = char_handler
          script = char_handler
  
      # Unicode Character Summaries (category and script name)
      character_counts = get_character_counts_vc(vc)
  
      character_counts_series = character_counts
      summary = {
          "n_characters_distinct": len(character_counts_series),
          "n_characters": np.sum(character_counts_series.values),
          "character_counts": character_counts_series,
      }
  
      char_to_block = {
          key: block(key) for key in character_counts.keys()
      }
      char_to_category_short = {
          key: category(key) for key in character_counts.keys()
      }
      char_to_script = {
          key: script(key) for key in character_counts.keys()
      }
  
      summary.update(
          {
              "category_alias_values": {
                  key: category_long(value)
                  for key, value in char_to_category_short.items()
              },
              "block_alias_values": {
                  key: block_abbr(value)
                  for key, value in char_to_block.items()
              },
          }
      )
  
      # Retrieve original distribution
      block_alias_counts: Counter = Counter()
      per_block_char_counts: dict = {
          k: Counter() for k in summary["block_alias_values"].values()
      }
      for char, n_char in character_counts.items():
          block_name = summary["block_alias_values"][char]
          block_alias_counts[block_name] += n_char
          per_block_char_counts[block_name][char] = n_char
      summary["block_alias_counts"] = counter_to_series(
          block_alias_counts
      )
      summary["n_block_alias"] = len(summary["block_alias_counts"])
      summary["block_alias_char_counts"] = {
          k: counter_to_series(v)
          for k, v in per_block_char_counts.items()
      }
  
      script_counts: Counter = Counter()
      per_script_char_counts: dict = {
          k: Counter() for k in char_to_script.values()
      }
      for char, n_char in character_counts.items():
          script_name = char_to_script[char]
          script_counts[script_name] += n_char
          per_script_char_counts[script_name][char] = n_char
      summary["script_counts"] = counter_to_series(script_counts)
      summary["n_scripts"] = len(summary["script_counts"])
      summary["script_char_counts"] = {
          k: counter_to_series(v)
          for k, v in per_script_char_counts.items()
      }
  
      category_alias_counts: Counter = Counter()
      per_category_alias_char_counts: dict = {
          k: Counter()
          for k in summary["category_alias_values"].values()
      }
      for char, n_char in character_counts.items():
          category_alias_name = summary["category_alias_values"][char]
          category_alias_counts[category_alias_name] += n_char
          per_category_alias_char_counts[category_alias_name][
              char
          ] += n_char
      summary["category_alias_counts"] = counter_to_series(
          category_alias_counts
      )
      if len(summary["category_alias_counts"]) > 0:
          summary["category_alias_counts"].index = summary[
              "category_alias_counts"
          ].index.str.replace("_", " ")
      summary["n_category"] = len(summary["category_alias_counts"])
      summary["category_alias_char_counts"] = {
          k: counter_to_series(v)
          for k, v in per_category_alias_char_counts.items()
      }
  
      with contextlib.suppress(AttributeError):
          summary["category_alias_counts"].index = summary[
              "category_alias_counts"
          ].index.str.replace("_", " ")
  
      return summary
  
file_path: ydata-profiling/src/ydata_profiling/model/pandas/describe_categorical_pandas.py
imports: import contextlib
  import string
  from collections import Counter
  from typing import List, Tuple
  import numpy
  import pandas
  from ydata_profiling.config import Settings
  from ydata_profiling.model.pandas.imbalance_pandas import column_imbalance_score
  from ydata_profiling.model.pandas.utils_pandas import weighted_median
  from ydata_profiling.model.summary_algorithms import chi_square, describe_categorical_1d, histogram_compute, series_handle_nulls, series_hashable
label_desc: Use image node_id 4 for calling a global function with example usage: unicode_summary_vc(vc) and returns: summary