utils.py 1.2 KB

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