diff --git a/cadetrdm/repositories.py b/cadetrdm/repositories.py index 0eb694f2873065b262b885039c4134ec6334e803..fd71e3f3f11fcc78de3f13dd07129f62d6bed539 100644 --- a/cadetrdm/repositories.py +++ b/cadetrdm/repositories.py @@ -600,7 +600,7 @@ class ProjectRepo(BaseRepo): print("Deprecation Warning. Setting the outputfolder manually during repo instantiation is deprecated" " and will be removed in a future update.") - self.output_folder = output_remotes["output_folder_name"] + self._output_folder = output_remotes["output_folder_name"] with open(repository_path / ".cadet-rdm-data.json", "r") as handle: metadata = json.load(handle) @@ -609,7 +609,7 @@ class ProjectRepo(BaseRepo): print(f"Repo version {repo_version} is outdated. Current CADET-RDM version is {cadetrdm_version}\n" "Updating the repository now.") - self._output_repo = OutputRepo(self.working_dir / self.output_folder) + self._output_repo = OutputRepo(self.working_dir / self._output_folder) self._on_context_enter_commit_hash = None self._is_in_context_manager = False @@ -669,7 +669,7 @@ class ProjectRepo(BaseRepo): """ project_repo_hash = str(self.head.commit) timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") - branch_name = "_".join([timestamp, self.output_folder, "from", str(self.active_branch), project_repo_hash[:7]]) + branch_name = "_".join([timestamp, self._output_folder, "from", str(self.active_branch), project_repo_hash[:7]]) return branch_name def check_results_master(self): @@ -694,7 +694,7 @@ class ProjectRepo(BaseRepo): self.output_repo.checkout("master") - tsv_filepath = self.working_dir / self.output_folder / "log.tsv" + tsv_filepath = self.working_dir / self._output_folder / "log.tsv" df = pd.read_csv(tsv_filepath, sep="\t", header=0) # Clean up the headers @@ -752,11 +752,11 @@ class ProjectRepo(BaseRepo): :return: """ - tsv_filepath = self.working_dir / self.output_folder / "log.tsv" + tsv_filepath = self.working_dir / self._output_folder / "log.tsv" if tsv_filepath.exists(): return - csv_filepath = self.working_dir / self.output_folder / "log.csv" + csv_filepath = self.working_dir / self._output_folder / "log.csv" if not csv_filepath.exists(): # We have just initialized the repo and neither tsv nor csv exist. return @@ -787,7 +787,7 @@ class ProjectRepo(BaseRepo): self._output_repo._git.checkout("master") - logs_folderpath = self.working_dir / self.output_folder / "run_history" / output_branch_name + logs_folderpath = self.working_dir / self._output_folder / "run_history" / output_branch_name if not logs_folderpath.exists(): os.makedirs(logs_folderpath) @@ -876,7 +876,7 @@ class ProjectRepo(BaseRepo): output_json_filepath = self.working_dir / "output_remotes.json" with open(output_json_filepath, "w") as file_handle: remotes_dict = {remote.name: str(remote.url) for remote in self.output_repo.remotes} - json_dict = {"output_folder_name": self.output_folder, "output_remotes": remotes_dict} + json_dict = {"output_folder_name": self._output_folder, "output_remotes": remotes_dict} json.dump(json_dict, file_handle, indent=2) def download_file(self, url, file_path): @@ -927,7 +927,7 @@ class ProjectRepo(BaseRepo): source_filepath = self.output_repo.working_dir / file_path - target_folder = self.working_dir / (self.output_folder + "_cached") / branch_name + target_folder = self.working_dir / (self._output_folder + "_cached") / branch_name os.makedirs(target_folder, exist_ok=True) target_filepath = target_folder / file_path @@ -957,14 +957,14 @@ class ProjectRepo(BaseRepo): if sub_path is None: return self.working_dir / self.output_repo.working_dir else: - return self.working_dir / self.output_repo.working_dir, sub_path + return self.working_dir / self.output_repo.working_dir / sub_path def remove_cached_files(self): """ Delete all previously cached results. """ - if (self.working_dir / (self.output_folder + "_cached")).exists(): - delete_path(self.working_dir / (self.output_folder + "_cached")) + if (self.working_dir / (self._output_folder + "_cached")).exists(): + delete_path(self.working_dir / (self._output_folder + "_cached")) def test_for_correct_repo_setup(self): """ @@ -1024,7 +1024,7 @@ class ProjectRepo(BaseRepo): previous_branch = self.output_repo.active_branch.name self.output_repo.checkout(branch_name) - target_folder = self.working_dir / (self.output_folder + "_cached") / branch_name + target_folder = self.working_dir / (self._output_folder + "_cached") / branch_name shutil.copytree(source_filepath, target_folder) diff --git a/docs/source/user_guide/getting-started.md b/docs/source/user_guide/getting-started.md index 5a525a08ec938bca1fd41615343ff7d605944414..fff79444b70c07f8bedbbc01255b0c8d95929734 100644 --- a/docs/source/user_guide/getting-started.md +++ b/docs/source/user_guide/getting-started.md @@ -56,6 +56,7 @@ You can add datatypes you require by running: repo.output_repo.add_filetype_to_lfs("*.npy") ```` + or from within the output folder: ```bash diff --git a/tests/test_git_adapter.py b/tests/test_git_adapter.py index f0679c4ac15aa7acfc085680aaf07deca22d427d..b917a52c561864f4b5a6b76e588c01cba74bada1 100644 --- a/tests/test_git_adapter.py +++ b/tests/test_git_adapter.py @@ -77,12 +77,20 @@ def try_commit_results_data(path_to_repo): repo = ProjectRepo(path_to_repo) current_commit_number = count_commit_number(repo.output_repo) with repo.track_results(results_commit_message="Add array"): - example_generate_results_array(path_to_repo, output_folder=repo.output_folder) + example_generate_results_array(path_to_repo, output_folder=repo.output_path) updated_commit_number = count_commit_number(repo.output_repo) assert current_commit_number <= updated_commit_number return str(repo.output_repo.active_branch) +def try_output_function(path_to_repo): + repo = ProjectRepo(path_to_repo) + filepath = repo.output_path / "foo" / "bar" + assert isinstance(filepath, Path) + filepath = repo.output_data("foo/bar") + assert isinstance(filepath, Path) + + def try_print_log(path_to_repo): repo = ProjectRepo(path_to_repo) repo.print_output_log() @@ -93,7 +101,7 @@ def try_commit_results_with_uncommitted_code_changes(path_to_repo): modify_code(path_to_repo) with pytest.raises(Exception): with repo.track_results(results_commit_message="Add array"): - example_generate_results_array(path_to_repo, output_folder=repo.output_folder) + example_generate_results_array(path_to_repo, output_folder=repo.output_path) repo.commit("add code to print random number", add_all=True) @@ -104,7 +112,7 @@ def try_load_previous_output(path_to_repo, branch_name): file_path="result.csv") previous_array = np.loadtxt(cached_array_path, delimiter=",") extended_array = np.concatenate([previous_array, previous_array]) - extended_array_file_path = path_to_repo / repo.output_folder / "extended_result.csv" + extended_array_file_path = path_to_repo / repo.output_path / "extended_result.csv" np.savetxt(extended_array_file_path, extended_array, delimiter=",") @@ -201,8 +209,8 @@ def test_cadet_rdm(path_to_repo): try_commit_code(path_to_repo) try_commit_code_without_code_changes(path_to_repo) try_commit_results_with_uncommitted_code_changes(path_to_repo) + try_output_function(path_to_repo) - results_branch_name = try_commit_results_data(path_to_repo) results_branch_name = try_commit_results_data(path_to_repo) try_print_log(path_to_repo)