diff --git a/lamindb/core/_settings.py b/lamindb/core/_settings.py index 1ae56f36e..6e994209b 100644 --- a/lamindb/core/_settings.py +++ b/lamindb/core/_settings.py @@ -4,7 +4,7 @@ from typing import TYPE_CHECKING import lamindb_setup as ln_setup -from lamin_utils import logger +from lamin_utils import colors, logger from lamindb_setup._set_managed_storage import set_managed_storage from lamindb_setup.core._settings import settings as setup_settings from lamindb_setup.core._settings_instance import sanitize_git_repo_url @@ -43,6 +43,36 @@ def __init__(self): logger.set_verbosity(self._verbosity_int) self._sync_git_repo: str | None = None + def __repr__(self) -> str: # pragma: no cover + cls_name = colors.green(self.__class__.__name__) + verbosity_color = colors.yellow if self.verbosity == "warning" else colors.green + verbosity_str = verbosity_color(self.verbosity) + + storage_root = self._storage_settings.root_as_str + storage_str = colors.italic(storage_root) + + instance_str = colors.italic(self.instance_uid) + track_color = colors.green if self.track_run_inputs else colors.yellow + track_str = track_color(str(self.track_run_inputs)) + + lines = [ + f"{cls_name}", + f" instance: {instance_str}", + f" storage: {storage_str}", + f" verbosity: {verbosity_str}", + f" track_run_inputs: {track_str}", + ] + + if self.sync_git_repo: + repo_name = ( + self.sync_git_repo.split("/")[-1] + if "/" in self.sync_git_repo + else self.sync_git_repo + ) + lines.append(f" sync_git_repo: {colors.italic(repo_name)}") + + return "\n".join(lines) + @property def creation(self) -> CreationSettings: """SQLRecord creation settings. diff --git a/tests/core/test_settings.py b/tests/core/test_settings.py new file mode 100644 index 000000000..06ddeb964 --- /dev/null +++ b/tests/core/test_settings.py @@ -0,0 +1,14 @@ +import lamindb as ln + + +def test_settings_repr(): + repr_str = repr(ln.settings) + + lines = repr_str.split("\n") + assert "Settings" in lines[0] + assert all(line.startswith(" ") for line in lines[1:]) + + content = "\n".join(lines[1:]) + assert content.find("instance:") < content.find("storage:") + assert content.find("storage:") < content.find("verbosity:") + assert content.find("verbosity:") < content.find("track_run_inputs:")