Source code for bsb.config.parsers
import abc
import functools
from ..exceptions import PluginError
[docs]
class ConfigurationParser(abc.ABC):
@abc.abstractmethod
def parse(self, content, path=None):
pass
@abc.abstractmethod
def generate(self, tree, pretty=False):
pass
@functools.cache
def get_configuration_parser_classes():
from ..plugins import discover
return discover("config.parsers")
[docs]
def get_configuration_parser(parser, **kwargs):
"""
Create an instance of a configuration parser that can parse configuration
strings into configuration trees, or serialize trees into strings.
Configuration trees can be cast into Configuration objects.
"""
parsers = get_configuration_parser_classes()
if parser not in parsers:
raise PluginError(f"Configuration parser '{parser}' not found")
return parsers[parser](**kwargs)
__all__ = [
"ConfigurationParser",
"get_configuration_parser",
"get_configuration_parser_classes",
]