__all__ = [
    "BaseGraphFactory",
    "CodeQaGraphFactory",
    "DocsGraphFactory",
    "ProjectQaAnalysisGraphFactory",
    "ProjectQaAnswerGraphFactory",
    "ProjectQaClassificationGraphFactory",
    "ProjectQaConversationGraphFactory",
    "ProjectEditsGraphFactory",
    "ProjectQaGraphFactory",
    "ProjectQaRetrievalGraphFactory",
]


def __getattr__(name: str):
    if name == "BaseGraphFactory":
        from app.modules.agent.engine.graphs.base_graph import BaseGraphFactory

        return BaseGraphFactory
    if name == "CodeQaGraphFactory":
        from app.modules.agent.engine.graphs.code_qa_graph import CodeQaGraphFactory

        return CodeQaGraphFactory
    if name == "DocsGraphFactory":
        from app.modules.agent.engine.graphs.docs_graph import DocsGraphFactory

        return DocsGraphFactory
    if name == "ProjectQaConversationGraphFactory":
        from app.modules.agent.engine.graphs.project_qa_step_graphs import ProjectQaConversationGraphFactory

        return ProjectQaConversationGraphFactory
    if name == "ProjectQaClassificationGraphFactory":
        from app.modules.agent.engine.graphs.project_qa_step_graphs import ProjectQaClassificationGraphFactory

        return ProjectQaClassificationGraphFactory
    if name == "ProjectQaRetrievalGraphFactory":
        from app.modules.agent.engine.graphs.project_qa_step_graphs import ProjectQaRetrievalGraphFactory

        return ProjectQaRetrievalGraphFactory
    if name == "ProjectQaAnalysisGraphFactory":
        from app.modules.agent.engine.graphs.project_qa_step_graphs import ProjectQaAnalysisGraphFactory

        return ProjectQaAnalysisGraphFactory
    if name == "ProjectQaAnswerGraphFactory":
        from app.modules.agent.engine.graphs.project_qa_step_graphs import ProjectQaAnswerGraphFactory

        return ProjectQaAnswerGraphFactory
    if name == "ProjectEditsGraphFactory":
        from app.modules.agent.engine.graphs.project_edits_graph import ProjectEditsGraphFactory

        return ProjectEditsGraphFactory
    if name == "ProjectQaGraphFactory":
        from app.modules.agent.engine.graphs.project_qa_graph import ProjectQaGraphFactory

        return ProjectQaGraphFactory
    raise AttributeError(name)
