import os import platform import sys from importlib.metadata import PackageNotFoundError, version def _get_sys_info(): """ Get useful system information. Returns ------- dict Useful system information. """ return { "python": sys.version.replace(os.linesep, " "), "executable": sys.executable, "machine": platform.platform(), } def _get_deps_info(): """ Get the versions of the dependencies. Returns ------- dict Versions of the dependencies. """ deps = ["cobyqa", "numpy", "scipy", "setuptools", "pip"] deps_info = {} for module in deps: try: deps_info[module] = version(module) except PackageNotFoundError: deps_info[module] = None return deps_info def show_versions(): """ Display useful system and dependencies information. When reporting issues, please include this information. """ print("System settings") print("---------------") sys_info = _get_sys_info() print( "\n".join( f"{k:>{max(map(len, sys_info.keys())) + 1}}: {v}" for k, v in sys_info.items() ) ) print() print("Python dependencies") print("-------------------") deps_info = _get_deps_info() print( "\n".join( f"{k:>{max(map(len, deps_info.keys())) + 1}}: {v}" for k, v in deps_info.items() ) )