utils.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """Finds all the specs that we can test with"""
  2. import gymnasium as gym
  3. import numpy as np
  4. all_testing_env_specs = [
  5. env_spec
  6. for env_spec in gym.envs.registry.values()
  7. if env_spec.entry_point.startswith("minigrid.envs")
  8. ]
  9. minigrid_testing_env_specs = [
  10. env_spec
  11. for env_spec in all_testing_env_specs
  12. if not env_spec.entry_point.startswith("minigrid.envs.babyai")
  13. ]
  14. def assert_equals(a, b, prefix=None):
  15. """Assert equality of data structures `a` and `b`.
  16. Args:
  17. a: first data structure
  18. b: second data structure
  19. prefix: prefix for failed assertion message for types and dicts
  20. """
  21. assert type(a) == type(b), f"{prefix}Differing types: {a} and {b}"
  22. if isinstance(a, dict):
  23. assert list(a.keys()) == list(b.keys()), f"{prefix}Key sets differ: {a} and {b}"
  24. for k in a.keys():
  25. v_a = a[k]
  26. v_b = b[k]
  27. assert_equals(v_a, v_b)
  28. elif isinstance(a, np.ndarray):
  29. np.testing.assert_array_equal(a, b)
  30. elif isinstance(a, tuple):
  31. for elem_from_a, elem_from_b in zip(a, b):
  32. assert_equals(elem_from_a, elem_from_b)
  33. else:
  34. assert a == b