# -*- coding: utf8 -*- import os import os.path as osp import sys import itertools import json from jacinle.cli.git import get_git_revision_hash def escape_desc_name(filename): basename = osp.basename(filename) if basename.endswith('.py'): basename = basename[:-3] name = basename.replace('.', '_') return name def ensure_path(path): os.makedirs(path, exist_ok=True) return path def format_meters(caption, meters_kv, kv_format, glue): log_str = [caption] log_str.extend(itertools.starmap(kv_format.format, sorted(meters_kv.items()))) return glue.join(log_str) def pretty_json_dumps(value): return json.dumps(value, sort_keys=True, indent=4, separators=(',', ': ')) def dump_metainfo(metainfo=None, **kwargs): if metainfo is None: metainfo = {} metainfo.update(kwargs) metainfo.setdefault('_cmd', ' '.join(sys.argv)) metainfo.setdefault('_git', get_git_revision_hash()) return pretty_json_dumps(metainfo)