"""Miscellanious helper utils.""" import errno import os import logging import sys import json import jsmin def get_logger(name, level=logging.INFO, channel=sys.stderr): """Return a Logger object.""" logger_format = '[%(levelname)s] %(message)s' logger = logging.getLogger(name) logger.setLevel(level) handler = logging.StreamHandler(channel) handler.setLevel(level) formatter = logging.Formatter(logger_format) handler.setFormatter(formatter) logger.addHandler(handler) return logger def merge(dict1, dict2): """Return merged dictionaries (repeated keys are set to dict2 values).""" dict3 = dict1.copy() dict3.update(dict2) return dict3 def pad_list(lst, size): """Return list with exactly <size> elements.""" return lst[:size] + [None] * (size - len(lst)) def output(obj): """Print to stdout.""" print(str(obj)) def mkdir_p(path): """Create directory if non-existing, otherwise do nothing.""" try: os.makedirs(path) except OSError as exc: if exc.errno == errno.EEXIST and os.path.isdir(path): pass else: raise def pretty_json(obj): """Return pretty JSON string representation of a Python object.""" return json.dumps(obj, indent=2) def load_json(json_string): """Return Python object from JSON string.""" return json.loads(jsmin.jsmin(json_string))