code: def dict_diff(
      d1: dict, d2: dict
  ):  # check if 2 dictionaries are equal
      np.testing.assert_equal(
          d1, d2
      )  # sanity check if dict values are equal or not
  
      for (k1, v1), (k2, v2) in zip(
          d1.items(), d2.items()
      ):  # check if their values have same dtype or not
          if isinstance(v1, dict):  # nested dictionary case
              dict_diff(v1, v2)
          elif isinstance(
              v1, np.ndarray
          ):  # checks if dtype and value of np.ndarray is equal
              iternumpy(k1, v1, v2)
          elif isinstance(v1, list):
              for element1, element2 in zip(
                  v1, v2
              ):  # iterates over all elements of list
                  if isinstance(element1, dict):
                      dict_diff(element1, element2)
                  elif isinstance(element1, np.ndarray):
                      iternumpy(k1, element1, element2)
  
imports: import datetime
  from unittest import TestCase
  from unittest.mock import patch
  import numpy
  import pandas
  import pyarrow
  import pytest
  from datasets import Array2D
  from datasets.arrow_dataset import Dataset
  from datasets.features import Audio, ClassLabel, Features, Image, Sequence, Value
  from datasets.features.features import _arrow_to_datasets_dtype, _cast_to_python_objects, cast_to_python_objects, encode_nested_example, generate_from_dict, string_to_arrow
  from datasets.features.translation import Translation, TranslationVariableLanguages
  from datasets.info import DatasetInfo
  from datasets.utils.py_utils import asdict
  from ..utils import require_jax, require_tf, require_torch
label_desc: Use image node_id 10 for calling a global function with example usage: dict_diff(d1, d2) without return types