code: def is_dicteq(dict1_, dict2_, almosteq_ok=True, verbose_err=True):
      
      import utool as ut
      assert len(dict1_) == len(dict2_), 'dicts are not of same length'
      try:
          for (key1, val1), (key2, val2) in zip(dict1_.items(), dict2_.items()):
              assert key1 == key2, 'key mismatch'
              assert type(val1) == type(val2), 'vals are not same type'
              if HAVE_NUMPY and np.iterable(val1):
                  if almosteq_ok and ut.is_float(val1):
                      assert np.all(ut.almost_eq(val1, val2)), 'float vals are not within thresh'
                  else:
                      assert all([np.all(x1 == x2) for (x1, x2) in zip(val1, val2)]), 'np vals are different'
              elif isinstance(val1, dict):
                  is_dicteq(val1, val2, almosteq_ok=almosteq_ok, verbose_err=verbose_err)
              else:
                  assert val1 == val2, 'vals are different'
      except AssertionError as ex:
          if verbose_err:
              ut.printex(ex)
          return False
      return True
docs: Checks to see if dicts are the same. Performs recursion. Handles numpy