Michael Panchenko a54aade730 Addition of dataclasses based config for scripts, major refactoring
So far only for one script (mujoco_ppo_cfg), extension will follow

Conflicts:
	examples/mujoco/mujoco_env.py
	examples/mujoco/mujoco_ppo.py
	setup.py
2023-10-09 13:01:27 +02:00

26 lines
791 B
Python

from dataclasses import asdict, is_dataclass
def collect_configs(*confs):
"""
Collect instances of dataclasses to a single dict mapping the
classname to the values. If any of the passed objects is not a
dataclass or if two instances of the same config class are passed,
an error will be raised.
:param confs: dataclasses
:return: Dictionary mapping class names to their instances.
"""
result = {}
for conf in confs:
if not is_dataclass(conf):
raise ValueError(f"Object {conf.__class__.__name__} is not a dataclass.")
if conf.__class__.__name__ in result:
raise ValueError(f"Duplicate instance of {conf.__class__.__name__} found.")
result[conf.__class__.__name__] = asdict(conf)
return result