Source code for hexrd.preprocess.argument_classes_factory

import hexrd.preprocess.profiles as profiles
from typing import Type


[docs]class ArgumentClassesFactory: """A factory to collect all Argument classes""" _creators: dict[str, Type["profiles.HexrdPPScript_Arguments"]] = {}
[docs] @classmethod def register(cls, klass: Type["profiles.HexrdPPScript_Arguments"]) -> None: cls._creators[klass.profile_name] = klass
[docs] @classmethod def get_registered(cls) -> list[str]: return list(cls._creators.keys())
[docs] @classmethod def get_registered_types( cls, ) -> tuple[Type["profiles.HexrdPPScript_Arguments"], ...]: return tuple(cls._creators.values())
[docs] @classmethod def get_args( cls, profile_name: str ) -> Type["profiles.HexrdPPScript_Arguments"]: creator = cls._creators.get(profile_name) if not creator: raise ValueError(format) return creator
[docs]def autoregister( cls: Type["profiles.HexrdPPScript_Arguments"], ) -> Type["profiles.HexrdPPScript_Arguments"]: """decorator that registers cls with ArgumentClassesFactory""" ArgumentClassesFactory().register(cls) return cls