From 9fd8dcb8b992eb768cffb5e6989917cd8ad58f34 Mon Sep 17 00:00:00 2001 From: Alexander Schlemmer <alexander@mail-schlemmer.de> Date: Tue, 7 Feb 2023 14:30:16 +0100 Subject: [PATCH] ENH: conversion of CaosDB objects to a more readable yaml serialization --- src/caoscrawler/scanner.py | 7 ++++++- unittests/debug_tree_test.py | 19 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/caoscrawler/scanner.py b/src/caoscrawler/scanner.py index bc2924dc..cdf2b621 100644 --- a/src/caoscrawler/scanner.py +++ b/src/caoscrawler/scanner.py @@ -61,6 +61,8 @@ from .stores import Store, GeneralStore, RecordStore from .structure_elements import StructureElement, Directory, NoneElement from .version import check_cfood_version +from caosdb.high_level_api import convert_to_python_object + from .debug.debug_tree import (DebugTreeStructureElement, DebugTreeConverter, DebugTreeVariable) @@ -437,9 +439,12 @@ def store_to_tree(store: Store): res: list[DebugTreeVariable] = list() copied = store.get_dict_copied() for name, value in store.get_storage().items(): + converted_value = value + if isinstance(value, db.Entity): + converted_value = convert_to_python_object(value).serialize(True) res.append( DebugTreeVariable( - name, value, + name, converted_value, copied[name], store.get_internal_id(name))) return res diff --git a/unittests/debug_tree_test.py b/unittests/debug_tree_test.py index 5b7bb9dc..6a2676d2 100644 --- a/unittests/debug_tree_test.py +++ b/unittests/debug_tree_test.py @@ -48,7 +48,14 @@ from caosdb.apiutils import compare_entities import pytest from pytest import raises -from caoscrawler.scanner import scanner +from caoscrawler.scanner import scanner, scan_directory + +def rfp(*pathcomponents): + """ + Return full path. + Shorthand convenience function. + """ + return join(dirname(__file__), *pathcomponents) def test_scanner(): @@ -59,7 +66,13 @@ def test_scanner(): crawled_data, debug_tree = scanner([d], [c]) print(yaml.dump(debug_tree)) - assert False + # assert False def test_scanner_directories(): - d = Directory("2023-02-07_ProjectName", "/") + crawled_data, debug_tree = scan_directory( + rfp("test_directories", "examples_article"), rfp("scifolder_cfood.yml")) + + print(crawled_data) + print(yaml.dump(debug_tree)) + + assert False -- GitLab