diff --git a/cbutil/__init__.py b/cbutil/__init__.py index b0700ed2b3570dbd2b6d8bb60a93e6af99a3d002..8d2139f85b74cf8ea0ed73b2673380fab4f8d328 100644 --- a/cbutil/__init__.py +++ b/cbutil/__init__.py @@ -1,6 +1,6 @@ from .upload import DBConfig, Uploader from .processing_functions import mesa_pd_text from .postprocessing import * -from .util import read_file_line_wise, time_conversion +from .util import read_file_line_wise, time_conversion, file_time_to_sec, get_from_nested_dict from .data_points import DataPoint, data_point_factory from .get_job_info import get_url_from_env, get_job_datapoints diff --git a/cbutil/postprocessing/__init__.py b/cbutil/postprocessing/__init__.py index 035ee908616633cf23a067a882795ae8abf63aba..5f06c8e5c0687fa9ddd5c24788de58f6f359a31a 100644 --- a/cbutil/postprocessing/__init__.py +++ b/cbutil/postprocessing/__init__.py @@ -1,3 +1,3 @@ -from .plain_text import process_linewise, iterate_csv +from .plain_text import process_linewise, iterate_csv, json2dict from .sqlite import sqlite_context, query_complete_table, build_iterate_query, iterate_all_tables from .sqlite_helper import query_builder diff --git a/cbutil/postprocessing/plain_text.py b/cbutil/postprocessing/plain_text.py index 083f9184f2d1273440dc7b4e5287ce214b7367e9..389531a968e4c7deaa76a98e242538572d8fedc8 100644 --- a/cbutil/postprocessing/plain_text.py +++ b/cbutil/postprocessing/plain_text.py @@ -1,4 +1,5 @@ import csv +import json from collections import abc from typing import Callable, Iterable @@ -30,3 +31,8 @@ class CSVIterator(abc.Iterable): with open(self.file_name, "r") as in_file: for row in csv.DictReader(in_file): yield row + + +def json2dict(path: str) -> dict: + with open(path, "r") as json_file: + return json.load(json_file) diff --git a/cbutil/util.py b/cbutil/util.py index d42acf3995af5ed901bf9ebad591547848836ab6..01cf6f72df025371d147f44bb3f6c0d3709d83c6 100644 --- a/cbutil/util.py +++ b/cbutil/util.py @@ -1,11 +1,12 @@ -import git +import logging +import operator import os from datetime import datetime - -from typing import Union, Tuple +from functools import reduce from pathlib import Path +from typing import Tuple, Union -import logging +import git logger = logging.getLogger(__file__) @@ -68,3 +69,7 @@ def time_conversion(time_stamp, *, pattern="%Y-%m-%d %H:%M:%S"): dt = datetime.fromisoformat(time_stamp) return int(dt.timestamp()) + + +def get_from_nested_dict(nested_dict, keys): + return reduce(operator.getitem, keys, nested_dict)