code: def _hash_dataset(dataset: pd.DataFrame) -> dict:
      """Generate hashes for `dataset` at various levels of specificity
  
      Parameters
      ----------
      dataset: pandas.DataFrame
          DataFrame to be described with a dict of hashes
  
      Returns
      -------
      dict
          "dataset" (str): Hash of `dataset`, itself
          "column_names" (str): Hash of `dataset.columns`, capturing names, order, and add/drops
          "column_values" (dict): Keys are `dataset.columns`, and values are hashes for each column
  
      Examples
      --------
      >>> _hash_dataset(pd.DataFrame(dict(a=[0, 1], b=[2, 3])))  # doctest: +NORMALIZE_WHITESPACE
      {'dataset': 't0rdT14SDIH-CVm-dce1Hlsr2oM7q6pss_GpV3rJ6bw=',
       'column_names': 't2r52T-rdDqIDs75-83buoieqk0KyHEpRJMJAAzfzb4=',
       'column_values': {'a': 'buQ0yuUUbLN57tC6050g7yWrvAdk-NwGIEEWHJC88EY=',
                         'b': 'j9nBFZVu4ZEnsoaRYiI93DcrbV3A_hzcKdf0P5gS7g4='}}
      >>> _hash_dataset(pd.DataFrame(dict(x=[0, 1], b=[6, 7])))  # doctest: +NORMALIZE_WHITESPACE
      {'dataset': 'TNLSddRnWVfoytkhHrSNWXqVW2TV7cHKht8MMLWcbhY=',
       'column_names': '9l1vTGGIxfuA4rJZ-ePalM-9Q5D0BfLp5bogE0U-oYQ=',
       'column_values': {'x': 'l2dZ6AeGRuHH97J0qb8I1H-pwK-ubHqElDqFIuKAbIw=',
                         'b': 'uIvA32AuBuj9LTU652UQUBI0VH9UmF2ZJeL4NefiiLg='}}
      >>> _hash_dataset(None)
      {'dataset': None, 'column_names': None, 'column_values': None}"""
      if (not isinstance(dataset, pd.DataFrame)) and (
          dataset is None or dataset == 0
      ):
          return dict(
              dataset=None, column_names=None, column_values=None
          )
      return dict(
          dataset=make_hash_sha256(dataset),
          column_names=make_hash_sha256(dataset.columns),
          column_values={
              _: make_hash_sha256(dataset[_]) for _ in dataset.columns
          },
      )
  
imports: from hyperparameter_hunter.keys.hashing import make_hash_sha256
  from hyperparameter_hunter.space.dimensions import Categorical, RejectedOptional
  from hyperparameter_hunter.utils.boltons_utils import remap, default_visit, default_enter
  from hyperparameter_hunter.utils.general_utils import subdict
  import ast
  from contextlib import suppress
  from inspect import getsource
  import numpy
  import pandas
  from typing import List, Callable, Dict, Union, Tuple
label_desc: Use image node_id 7 for calling a global function with example usage: _hash_dataset(dataset) and returns: dict, dict