Skip to content

Registry

TranscriberRegistry

Stores references to all classes that use the @register_transcriber decorator.

Source code in asrbench\transcribers\registry.py
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class TranscriberRegistry:
    """Stores references to all classes that use the
    @register_transcriber decorator."""
    __transcribers: Dict[str, Type[Transcriber]] = {}

    @classmethod
    def register(cls, id_: str, class_: Type[Transcriber]) -> None:
        logger.debug(f"Register transcriber {id_}.")
        cls.__transcribers[id_] = class_

    @classmethod
    def get_transcriber(cls, id_: str) -> Type[Transcriber]:
        if id_ not in cls.__transcribers:
            raise KeyError(f"Transcriber {id_} not registered.")

        logger.debug(f"Get transcriber {id_}.")
        return cls.__transcribers[id_]

    @classmethod
    def list_transcribers(cls) -> List[str]:
        return [class_ for class_ in cls.__transcribers.keys()]

load_registers(pkg_path)

Loads all the modules within the package provided.

Parameters:

Name Type Description Default
pkg_path Path

path class from pathlib with the package path.

required
Source code in asrbench\transcribers\registry.py
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
def load_registers(pkg_path: Path) -> None:
    """Loads all the modules within the package provided.

    Arguments:
        pkg_path: path class from pathlib with the package path.
    """
    if not pkg_path.is_dir():
        raise ValueError(f"The path {pkg_path} is not a valid directory.")

    pkg_path_str: str = pkg_path.parent.resolve().__str__()

    if pkg_path_str not in sys.path:
        sys.path.insert(0, pkg_path_str)

    for _, module_name, _ in pkgutil.iter_modules([pkg_path]):
        importlib.import_module(f"{pkg_path.name}.{module_name}")

    if pkg_path_str in sys.path:
        sys.path.remove(pkg_path_str)

register_transcriber(id_)

Decorator to register the classes that implement the Transcriber interface.

Parameters:

Name Type Description Default
id_ str

Class identifier that will be used in the configfile.

required
Usage

@register_transcriber("identifier")

class MyCustomTranscriber(Transcriber): pass

Source code in asrbench\transcribers\registry.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def register_transcriber(id_: str) -> Callable[
    [Type[Transcriber]], Type[Transcriber]
]:
    """Decorator to register the classes that implement the
    Transcriber interface.

    Arguments:
        id_: Class identifier that will be used in the configfile.

    Usage:
        @register_transcriber("identifier")

        class MyCustomTranscriber(Transcriber):
            pass
    """

    def decorator(cls: Type[Transcriber]) -> Type[Transcriber]:
        TranscriberRegistry.register(id_, cls)
        return cls

    return decorator