From 19c0af084c6718f377ffc45bf2af030323e8108e Mon Sep 17 00:00:00 2001 From: dvezinet Date: Thu, 14 Aug 2025 12:10:19 +0000 Subject: [PATCH 1/3] [#232] More robust loading --- datastock/_class0.py | 4 ++-- datastock/_saveload.py | 24 ++++++++++++++++-------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/datastock/_class0.py b/datastock/_class0.py index 0c54855..64868be 100644 --- a/datastock/_class0.py +++ b/datastock/_class0.py @@ -172,7 +172,7 @@ def save( verb=True, ): - lsep = [';', '&', '?', '#', ',', '~', '.', '-', '_'] + lsep = ['::', ';;', '&&', '??', '##', ',,', '~~', '..', '__'] if sep is None: for ss in lsep: c0 = ( @@ -214,4 +214,4 @@ def save( __all__ = [ sorted([k0 for k0 in locals() if k0.startswith('DataStock')])[-1] -] \ No newline at end of file +] diff --git a/datastock/_saveload.py b/datastock/_saveload.py index 62053d8..842e6dd 100644 --- a/datastock/_saveload.py +++ b/datastock/_saveload.py @@ -314,13 +314,21 @@ def load( elif typ == 'type': dout[k0] = dflat[k0] else: - msg = ( - f"Don't know how to deal with dflat['{k0}']:\n" - f"\t- typ: {typ}\n" - f"\t- type: {type(dflat[k0])}\n" - f"\t- value: {dflat[k0]}\n" - ) - raise Exception(msg) + if isinstance(dflat[k0], str) and 'str' in typ: + msg = ( + f"Not sure how to interpret dflat['{k0}'] - " + "trying as a str (as-is): {dflat[k0]}\n" + ) + warnings.warn(msg) + dout[k0] = dflat[k0] + else: + msg = ( + f"Don't know how to deal with dflat['{k0}']:\n" + f"\t- typ: {typ}\n" + f"\t- type: {type(dflat[k0])}\n" + f"\t- value: {dflat[k0]}\n" + ) + raise Exception(msg) dout = _generic_utils.reshape_dict(dout, sep=sep) @@ -579,4 +587,4 @@ def _get_files_from_path( else: warnings.warn(msg) - return out \ No newline at end of file + return out From 939fe2b3fb58ee8afac2ee5cb315dd36115e8b6e Mon Sep 17 00:00:00 2001 From: dvezinet Date: Thu, 14 Aug 2025 12:39:46 +0000 Subject: [PATCH 2/3] [#232] Better warning msg --- datastock/_saveload.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datastock/_saveload.py b/datastock/_saveload.py index 842e6dd..badc7f2 100644 --- a/datastock/_saveload.py +++ b/datastock/_saveload.py @@ -316,8 +316,8 @@ def load( else: if isinstance(dflat[k0], str) and 'str' in typ: msg = ( - f"Not sure how to interpret dflat['{k0}'] - " - "trying as a str (as-is): {dflat[k0]}\n" + f"\nNot sure about dflat['{k0}'], " + f"trying as-is str: '{dflat[k0]}'\n" ) warnings.warn(msg) dout[k0] = dflat[k0] From cd5eff5fad1edd2236fb2b959e5fd8408a44af7a Mon Sep 17 00:00:00 2001 From: dvezinet Date: Thu, 14 Aug 2025 12:43:59 +0000 Subject: [PATCH 3/3] [#232] Normalized as new case --- datastock/_saveload.py | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/datastock/_saveload.py b/datastock/_saveload.py index badc7f2..2d9dec3 100644 --- a/datastock/_saveload.py +++ b/datastock/_saveload.py @@ -290,6 +290,8 @@ def load( dout[k0] = list(dflat[k0]) elif typ == 'str': dout[k0] = str(dflat[k0]) + elif isinstance(dflat[k0], str) and 'str' in typ: + dout[k0] = dflat[k0] elif typ == 'chararray': dout[k0] = dflat[k0] elif typ in ['int']: @@ -314,21 +316,13 @@ def load( elif typ == 'type': dout[k0] = dflat[k0] else: - if isinstance(dflat[k0], str) and 'str' in typ: - msg = ( - f"\nNot sure about dflat['{k0}'], " - f"trying as-is str: '{dflat[k0]}'\n" - ) - warnings.warn(msg) - dout[k0] = dflat[k0] - else: - msg = ( - f"Don't know how to deal with dflat['{k0}']:\n" - f"\t- typ: {typ}\n" - f"\t- type: {type(dflat[k0])}\n" - f"\t- value: {dflat[k0]}\n" - ) - raise Exception(msg) + msg = ( + f"Don't know how to deal with dflat['{k0}']:\n" + f"\t- typ: {typ}\n" + f"\t- type: {type(dflat[k0])}\n" + f"\t- value: {dflat[k0]}\n" + ) + raise Exception(msg) dout = _generic_utils.reshape_dict(dout, sep=sep)