class ConfigMapper: """Class for creating ConfigMapper objects. This class can be used to create custom configuration names using YAML files. For each class or object instantiated in any modules, the ConfigMapper object can be used either with the functions, or as a decorator to store the mapping in the function. Attributes ---------- Methods ------- """ dicts = { "models": {}, "trainers": {}, "metrics": {}, "losses": {}, "optimizers": {}, "schedulers": {}, "devices": {}, "embeddings": {}, "params": {}, "datasets": {}, "preprocessors": {}, "tokenizers": {}, } @classmethod def map(cls, key, name): """ Map a particular name to an object, in the specified key Parameters ---------- name : str The name of the object which will be used. key : str The key of the mapper to be used. """ def wrap(obj): if key in cls.dicts.keys(): cls.dicts[key][name] = obj else: cls.dicts[key] = {} cls.dicts[key][name] = obj return obj return wrap @classmethod def get_object(cls, key, name): """""" try: return cls.dicts[key][name] except: raise NotImplementedError("Key:{name} Undefined".format(name=name)) configmapper = ConfigMapper()