Skip to content

registry

util.registry

Registerable

Bases: ABC

Abstract class for base module classes which have class registry.

Usage

from future import annotations ... from typing import Dict ... from .SaigeToolkit.SaigeToolkit.util.registry import Registerable ... ... ... class BaseModule(Registerable): ... registry: Dict[str, BaseModule] ... ... ... class ImplementedModuleA(BaseModule): ... pass ... ... ... class ImplementedModuleB(BaseModule): ... pass ... ... ... print(BaseModule.registry) ... # output ... # {'ImplementedModuleA': main.ImplementedModuleA, ... # 'ImplementedModuleB': main.ImplementedModuleB}

If you want use arbitrary key for registering,

class BaseModule2(Registerable): ... registry: Dict[str, BaseModule2] ... ... ... class ImplementedModule2A(BaseModule2, key="module_2_a"): ... pass ... ... ... print(BaseModule2.registry) ... # output ... # {'module_2_a': main.ImplementedModule2A}

or, define "init_subclass" again.

class BaseModule3(Registerable): ... registry: Dict[str, BaseModule3] ... ... def init_subclass(cls): ... super().init_subclass(key=cls.name.lower()) ... ... class ImplementedModule3A(BaseModule3): ... pass ... ... ... print(BaseModule3.registry) ... # output ... # {'implementedmodule3a': main.ImplementedModule3A}