From 7ad0ee22500f3f69ece65ccbaf60ad9456a8955b Mon Sep 17 00:00:00 2001 From: Roland Minrui <114476598+RolandMinrui@users.noreply.github.com> Date: Wed, 26 Feb 2025 14:21:28 +0800 Subject: [PATCH] load code from file dict instead of folder (#641) Co-authored-by: Xu --- .gitignore | 1 + rdagent/core/experiment.py | 7 +++++++ rdagent/scenarios/data_science/proposal/exp_gen.py | 6 ++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 7fc5f776..88ae9f08 100644 --- a/.gitignore +++ b/.gitignore @@ -66,6 +66,7 @@ coverage.xml # Django stuff: *.log /log/ +log*/ local_settings.py db.sqlite3 db.sqlite3-journal diff --git a/rdagent/core/experiment.py b/rdagent/core/experiment.py index b2d63d4e..767365e1 100644 --- a/rdagent/core/experiment.py +++ b/rdagent/core/experiment.py @@ -219,6 +219,13 @@ class FBWorkspace(Workspace): relative_path = file_path.relative_to(folder_path) self.inject_files(**{str(relative_path): file_path.read_text()}) + def inject_code_from_file_dict(self, workspace: FBWorkspace) -> None: + """ + Load the workspace from the file_dict + """ + for name, code in workspace.file_dict.items(): + self.inject_files(**{name: code}) + def copy(self) -> FBWorkspace: """ copy the workspace from the original one diff --git a/rdagent/scenarios/data_science/proposal/exp_gen.py b/rdagent/scenarios/data_science/proposal/exp_gen.py index 324b11fe..261d0a1c 100644 --- a/rdagent/scenarios/data_science/proposal/exp_gen.py +++ b/rdagent/scenarios/data_science/proposal/exp_gen.py @@ -267,7 +267,8 @@ class DSExpGen(ExpGen): exp = DSExperiment(pending_tasks_list=[[task]], hypothesis=DSHypothesis(component)) if last_successful_exp: - exp.experiment_workspace.inject_code_from_folder(last_successful_exp.experiment_workspace.workspace_path) + # exp.experiment_workspace.inject_code_from_folder(last_successful_exp.experiment_workspace.workspace_path) + exp.experiment_workspace.inject_code_from_file_dict(last_successful_exp.experiment_workspace) return exp def gen(self, trace: DSTrace) -> DSExperiment: @@ -449,7 +450,8 @@ class DSExpGen(ExpGen): hypothesis, task, new_workflow_desc = _f(user_prompt) exp = DSExperiment(pending_tasks_list=[[task]], hypothesis=hypothesis) - exp.experiment_workspace.inject_code_from_folder(sota_exp.experiment_workspace.workspace_path) + # exp.experiment_workspace.inject_code_from_folder(sota_exp.experiment_workspace.workspace_path) + exp.experiment_workspace.inject_code_from_file_dict(sota_exp.experiment_workspace) if new_workflow_desc != "No update needed": workflow_task = WorkflowTask(