From d70bcc8457bbd8c473fb67f675e6c91fd89981d4 Mon Sep 17 00:00:00 2001 From: Sam Waseda Date: Mon, 4 Aug 2025 09:12:21 +0200 Subject: [PATCH 1/3] Add generate_unique_directory --- pyiron_snippets/files.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pyiron_snippets/files.py b/pyiron_snippets/files.py index 46cf8e6..3bc9bc8 100644 --- a/pyiron_snippets/files.py +++ b/pyiron_snippets/files.py @@ -1,6 +1,7 @@ from __future__ import annotations import tarfile +import uuid from pathlib import Path from typing import cast @@ -42,13 +43,21 @@ def categorize_folder_items(folder_path): class DirectoryObject: - def __init__(self, directory: str | Path | DirectoryObject): + def __init__( + self, + directory: str | Path | DirectoryObject = ".", + generate_unique_directory: bool | None = None, + ): if isinstance(directory, str): path = Path(directory) elif isinstance(directory, Path): path = directory elif isinstance(directory, DirectoryObject): path = directory.path + if ( + directory == "." and generate_unique_directory is None + ) or generate_unique_directory: + path = path / Path(f"data_{uuid.uuid4().hex}") self.path: Path = path self.create() self._protected = False From 5b966104ea86af64da0c3acf6ef529b0457b47fe Mon Sep 17 00:00:00 2001 From: Sam Waseda Date: Mon, 4 Aug 2025 09:29:56 +0200 Subject: [PATCH 2/3] Add docstring --- pyiron_snippets/files.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pyiron_snippets/files.py b/pyiron_snippets/files.py index 1da8417..5cd85e8 100644 --- a/pyiron_snippets/files.py +++ b/pyiron_snippets/files.py @@ -43,12 +43,30 @@ def categorize_folder_items(folder_path): class DirectoryObject: + """ + A class to represent a directory object that can be created, deleted, + and managed. It can also compress and decompress its contents. + It supports unique directory generation and can be protected from deletion + on garbage collection. + """ def __init__( self, directory: str | Path | DirectoryObject = ".", generate_unique_directory: bool | None = None, protected: bool = False, ): + """ + Initialize a DirectoryObject. + + Args: + directory (str | Path | DirectoryObject): The directory path or + DirectoryObject instance. + generate_unique_directory (bool | None): If True, generates a unique + directory name, otherwise it still generates a unique name if + the directory is "." and this parameter is None. + protected (bool): If True, prevents deletion of the directory object + on garbage collection. + """ if isinstance(directory, str): path = Path(directory) elif isinstance(directory, Path): From 784d64fbccb68e7f716ac804d1a7351b3f6eb383 Mon Sep 17 00:00:00 2001 From: Sam Dareska <37879103+samwaseda@users.noreply.github.com> Date: Mon, 4 Aug 2025 16:50:39 +0200 Subject: [PATCH 3/3] Update pyiron_snippets/files.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- pyiron_snippets/files.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyiron_snippets/files.py b/pyiron_snippets/files.py index 034ddb2..e992211 100644 --- a/pyiron_snippets/files.py +++ b/pyiron_snippets/files.py @@ -77,7 +77,7 @@ def __init__( if ( directory == "." and generate_unique_directory is None ) or generate_unique_directory: - path = path / Path(f"data_{uuid.uuid4().hex}") + path = path / f"data_{uuid.uuid4().hex}" self.path: Path = path self.create() self._protected = protected