From 741ff87786cdde0855f07d2bc9b704c558688178 Mon Sep 17 00:00:00 2001 From: "David W.H. Swenson" Date: Sat, 24 Jul 2021 08:10:43 -0400 Subject: [PATCH] Start to info command --- paths_cli/commands/info.py | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 paths_cli/commands/info.py diff --git a/paths_cli/commands/info.py b/paths_cli/commands/info.py new file mode 100644 index 00000000..dcfaaf94 --- /dev/null +++ b/paths_cli/commands/info.py @@ -0,0 +1,51 @@ +import click + +import importlib + +def get_module_version(module_name, version_path="version.full_version"): + try: + mod = importlib.import_module(module_name) + except ImportError: + return "NOT INSTALLED" + attr_seq = version_path.split('.') + current = mod + for attr in attr_seq: + current = getattr(current, attr) + return current + +LABEL_TO_MODULE = { + 'OpenPathSampling': 'openpathsampling', + 'OpenPathSampling CLI': 'paths_cli', + 'OpenMM': 'simtk.openmm' +} + +NONDEFAULT_VERSION_PATHS = { +} + +def python_module_info(label): + module = LABEL_TO_MODULE[label] + try: + version_path = NONDEFAULT_VERSION_PATHS[label] + except KeyError: + version_path = 'version.full_version' + version = get_module_version(module, version_path) + return label, version + +FORMAT = "{label}: {version}" + +@click.command( + 'info', + short_help="Environment information", +) +def info(): + OPS_LABELS = ['OpenPathSampling', 'OpenPathSampling CLI'] + OPENMM_LABELS = ['OpenMM'] + + for label in OPS_LABELS: + label, version = python_module_info(label) + print(FORMAT.format(label=label, version=version)) + + +CLI = info +SECTION = "Miscellaneous" +REQUIRES_OPS = (1, 0)