Source code for spey.about

"""Function to display details about the spey installation"""

import platform
import sys
from importlib.metadata import distribution, version
from importlib.util import find_spec


[docs] def about() -> None: """Prints the information regarding spey installation""" from spey._version import __version__ spey_meta = distribution("spey").metadata sep = "=" * 62 print(sep) print(f" spey v{__version__}") print(f" {spey_meta['Summary']}") print(f" {spey_meta['Project-URL']}") print(sep) print("\nSystem:") print(f" Platform: {platform.platform(aliased=True)}") print( f" Python: " f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}" ) print("\nCore dependencies:") _col = 22 for pkg in ("numpy", "scipy", "autograd", "tqdm", "joblib", "semantic_version"): print(f" {pkg:<{_col}}{version(pkg)}") if find_spec("iminuit") is not None: print(f" {'iminuit':<{_col}}{version('iminuit')} (optional)") print("\nInstalled backends:") from spey import _get_entry_points by_dist = {} for ep in _get_entry_points("spey.backend.plugins"): try: dist_name = ep.dist.name dist_ver = ep.dist.version except AttributeError: dist_name = ep.value.split(":")[0].split(".")[0] dist_ver = distribution(dist_name).version if dist_name not in by_dist: by_dist[dist_name] = (dist_ver, []) by_dist[dist_name][1].append(ep.name) for dist_name in sorted(by_dist): dist_ver, ep_names = by_dist[dist_name] print(f"\n {dist_name} v{dist_ver}:") for ep_name in sorted(ep_names): print(f" - {ep_name}")