from dataclasses import dataclass from myfasthtml.core.dsl.base_completion import BaseCompletionEngine from myfasthtml.core.formatting.dsl.parser import DSLParser @dataclass class DslDefinition: completion: BaseCompletionEngine validation: DSLParser # To do, this parser is not generic (specific to the Formatting DSL) class DslsManager: dsls: dict[str, DslDefinition] = {} @staticmethod def register(completion: BaseCompletionEngine, validation: DSLParser): # then engine_id is actually the DSL id DslsManager.dsls[completion.get_id()] = DslDefinition(completion, validation) @staticmethod def get_completion_engine(engine_id) -> BaseCompletionEngine: return DslsManager.dsls[engine_id].completion @staticmethod def get_validation_parser(engine_id) -> DSLParser: return DslsManager.dsls[engine_id].validation @staticmethod def reset(): DslsManager.dsls = {}