X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=fba%2Fhelpers%2Fcache.py;h=325e58337649ed543344d2f0706f81c7360f9344;hb=21c7c13dcdf897008a7f340e606c947092ba51bd;hp=97d5a7d9bc4050673a96a6278e150aa5e08eb400;hpb=874b573858431f6c56e0432cdb311282cbe0fadf;p=fba.git diff --git a/fba/helpers/cache.py b/fba/helpers/cache.py index 97d5a7d..325e583 100644 --- a/fba/helpers/cache.py +++ b/fba/helpers/cache.py @@ -15,6 +15,7 @@ # along with this program. If not, see . import logging +import sqlite3 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) @@ -25,50 +26,58 @@ _cache = {} ##### Cache ##### def key_exists(key: str) -> bool: - return key in _cache + logger.debug("key='%s' - CALLED!", key) + exists = key in _cache + + logger.debug("exists='%s' - EXIT!", exists) + return exists def set_all(key: str, rows: list, value: any): - logger.debug(f"key='{key}',rows()={len(rows)},value[]='{type(value)}' - CALLED!") + logger.debug("key='%s',rows()=%d,value[]='%s' - CALLED!", key, len(rows), type(value)) + if not isinstance(key, str): - raise ValueError("Parameter key[]='{type(key)}' is not 'str'") + raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'") elif not key_exists(key): - logger.debug(f"Cache for key='{key}' not initialized.") - _cache[key] = {} + logger.debug("Cache for key='%s' not initialized.", key) + _cache[key] = dict() + logger.debug("Setting %d row(s) for key='%s',value[%s]='%s' ...", len(rows), key, type(value), value) for sub in rows: - logger.debug(f"Setting key='{key}',sub[{type(sub)}]='{sub}'") - if isinstance(sub, tuple): - logger.debug(f"Setting key='{key}',sub[{type(sub)}]='{sub}',value[]='{type(value)}'") + logger.debug("Setting key='%s',sub[%s]='%s'", key, type(sub), sub) + if isinstance(sub, sqlite3.Row): + logger.debug("Setting key='%s',sub[%s]='%s',value[]='%s'", key, type(sub), sub, type(value)) _cache[key][sub[0]] = value else: - logger.warning(f"Unsupported type sub[]='{type(sub)}'") + logger.warning("Unsupported type sub[]='%s'", type(sub)) logger.debug("EXIT!") def set_sub_key(key: str, sub: str, value: any): - logger.debug(f"key='{key}',sub='{sub}',value[]='{type(value)}' - CALLED!") + logger.debug("key='%s',sub='%s',value[]='%s' - CALLED!", key, sub, type(value)) + if not isinstance(key, str): - raise ValueError("Parameter key[]='{type(key)}' is not 'str'") + raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'") elif not isinstance(sub, str): - raise ValueError("Parameter sub[]='{type(sub)}' is not 'str'") + raise ValueError(f"Parameter sub[]='{type(sub)}' is not of type 'str'") elif not key_exists(key): raise Exception(f"Cache for key='{key}' is not initialized, but function invoked") - logger.debug(f"Setting key='{key}',sub='{sub}',value[]='{type(value)}' ...") + logger.debug("Setting key='%s',sub='%s',value[%s]='%s' ...", key, sub, type(value), value) _cache[key][sub] = value logger.debug("EXIT!") def sub_key_exists(key: str, sub: str) -> bool: - logger.debug(f"key='{key}',sub='{sub}' - CALLED!") + logger.debug("key='%s',sub='%s' - CALLED!", key, sub) + if not isinstance(key, str): - raise ValueError("Parameter key[]='{type(key)}' is not 'str'") + raise ValueError(f"Parameter key[]='{type(key)}' is not of type 'str'") elif not isinstance(sub, str): - raise ValueError("Parameter sub[]='{type(sub)}' is not 'str'") + raise ValueError(f"Parameter sub[]='{type(sub)}' is not of type 'str'") elif not key_exists(key): raise Exception(f"Cache for key='{key}' is not initialized, but function invoked") exists = sub in _cache[key] - logger.debug(f"exists='{exists}' - EXIT!") + logger.debug("exists='%s' - EXIT!", exists) return exists