diff --git a/src/pydase/utils/helpers.py b/src/pydase/utils/helpers.py index 92fb6ae..abeca51 100644 --- a/src/pydase/utils/helpers.py +++ b/src/pydase/utils/helpers.py @@ -1,6 +1,7 @@ import inspect import logging from itertools import chain +from pathlib import Path from typing import Any logger = logging.getLogger(__name__) @@ -196,3 +197,9 @@ def get_data_service_class_reference() -> Any: def is_property_attribute(target_obj: Any, attr_name: str) -> bool: return isinstance(getattr(type(target_obj), attr_name, None), property) + + +def create_config_folder(config_dir: Path) -> None: + """Create a configuration directory if it doesn't already exist.""" + + config_dir.mkdir(exist_ok=True) diff --git a/tests/utils/test_helpers.py b/tests/utils/test_helpers.py index c80193e..82d968e 100644 --- a/tests/utils/test_helpers.py +++ b/tests/utils/test_helpers.py @@ -1,5 +1,11 @@ +import tempfile +from pathlib import Path + import pytest -from pydase.utils.helpers import is_property_attribute +from pydase.utils.helpers import ( + create_config_folder, + is_property_attribute, +) @pytest.mark.parametrize( @@ -26,3 +32,20 @@ def test_is_property_attribute(attr_name: str, expected: bool) -> None: dummy = DummyClass() assert is_property_attribute(dummy, attr_name) == expected + + +def test_create_config_folder() -> None: + with tempfile.TemporaryDirectory() as tmpdirname: + print("created temporary directory", tmpdirname) + + config_dir = Path(tmpdirname) / "config" + + assert not config_dir.exists() + + create_config_folder(config_dir) + + assert config_dir.exists() + + # Call the function again to test idempotency (it should not fail if the + # directory already exists) + create_config_folder(config_dir)