commit 8145e57c38b8b6736b6bc08124b5fc9e89c51664 Author: Jan Grewe Date: Fri Mar 8 11:27:11 2019 +0100 initial comit diff --git a/dj_local_conf.json b/dj_local_conf.json new file mode 100644 index 0000000..f23cf3d --- /dev/null +++ b/dj_local_conf.json @@ -0,0 +1,11 @@ +{ + "database.host": "localhost", + "database.password": "datajoint", + "database.port": 3306, + "loglevel": "DEBUG", + "display.width": 14, + "display.limit": 7, + "safemode": true, + "database.user": "dj", + "connection.init_function": null +} diff --git a/util.py b/util.py new file mode 100644 index 0000000..414bb14 --- /dev/null +++ b/util.py @@ -0,0 +1,45 @@ +from IPython import embed +from functools import reduce + +def read_info_file(file_name): + """ + Reads the info file and returns the stored metadata in a dictionary. The dictionary may be nested. + @param file_name: The name of the info file. + @return: dictionary, the stored information. + """ + root = {} + with open(file_name, 'r') as f: + lines = f.readlines() + for l in lines: + if not l.startswith("#"): + continue + l = l.strip("#").strip() + if len(l) == 0: + continue + if not ": " in l: # subsection + sec = {} + root[l[:-1] if l.endswith(":") else l] = sec + else: + parts = l.split(': ') + sec[parts[0].strip()] = parts[1].strip('"').strip() + return root + + +def find_key_recursive(dictionary, key, path=[]): + assert(isinstance(dictionary, dict)) + if key in dictionary.keys(): + path.append(key) + return True + for k in dictionary.keys(): + if isinstance(dictionary[k], dict): + if find_key_recursive(dictionary[k], key, path): + path.insert(-1, k) + break + return len(path) > 0 + + +def deep_get(dictionary, keys, default=None): + assert(isinstance(dictionary, dict)) + assert(isinstance(keys, list)) + return reduce(lambda d, key: d.get(key, default) if isinstance(d, dict) else default, keys, dictionary) +