Plain is headed towards 1.0! Subscribe for development updates →

 1from types import ModuleType
 2
 3from plain.runtime import settings
 4
 5from . import exceptions
 6from .flags import Flag
 7
 8
 9def get_flags_module() -> ModuleType:
10    flags_module = settings.FLAGS_MODULE
11
12    try:
13        return __import__(flags_module)
14    except ImportError as e:
15        raise exceptions.FlagImportError(
16            f"Could not import {flags_module} module"
17        ) from e
18
19
20def get_flag_class(flag_name: str) -> Flag:
21    flags_module = get_flags_module()
22
23    try:
24        flag_class = getattr(flags_module, flag_name)
25    except AttributeError as e:
26        raise exceptions.FlagImportError(
27            f"Could not find {flag_name} in {flags_module} module"
28        ) from e
29
30    return flag_class