versions.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import os
  2. import platform
  3. import sys
  4. from importlib.metadata import PackageNotFoundError, version
  5. def _get_sys_info():
  6. """
  7. Get useful system information.
  8. Returns
  9. -------
  10. dict
  11. Useful system information.
  12. """
  13. return {
  14. "python": sys.version.replace(os.linesep, " "),
  15. "executable": sys.executable,
  16. "machine": platform.platform(),
  17. }
  18. def _get_deps_info():
  19. """
  20. Get the versions of the dependencies.
  21. Returns
  22. -------
  23. dict
  24. Versions of the dependencies.
  25. """
  26. deps = ["cobyqa", "numpy", "scipy", "setuptools", "pip"]
  27. deps_info = {}
  28. for module in deps:
  29. try:
  30. deps_info[module] = version(module)
  31. except PackageNotFoundError:
  32. deps_info[module] = None
  33. return deps_info
  34. def show_versions():
  35. """
  36. Display useful system and dependencies information.
  37. When reporting issues, please include this information.
  38. """
  39. print("System settings")
  40. print("---------------")
  41. sys_info = _get_sys_info()
  42. print(
  43. "\n".join(
  44. f"{k:>{max(map(len, sys_info.keys())) + 1}}: {v}"
  45. for k, v in sys_info.items()
  46. )
  47. )
  48. print()
  49. print("Python dependencies")
  50. print("-------------------")
  51. deps_info = _get_deps_info()
  52. print(
  53. "\n".join(
  54. f"{k:>{max(map(len, deps_info.keys())) + 1}}: {v}"
  55. for k, v in deps_info.items()
  56. )
  57. )