Source code for rydiqule.rydiqule_utils
"""
General rydiqule package utilities
"""
import platform
import rydiqule
import inspect
import os
import sys
import psutil
from pathlib import Path
from importlib.metadata import version
[docs]
def about(obscure_paths: bool = True,
show_numpy_config: bool = True):
"""About box describing Rydiqule and its core dependencies.
Prints human readable strings of information about the system.
Parameters
----------
obscure_paths: bool, optional
Remove user directory from printed paths. Default is True.
show_numpy_config: bool, optional
Show the numpy config for BLAS/LAPACK backends. Default is True.
Examples
--------
>>> rq.about() # doctest: +SKIP
<BLANKLINE>
Rydiqule
================
<BLANKLINE>
Rydiqule Version: 2.1.1
Installation Path: ~\\rydiqule\\src\\rydiqule
<BLANKLINE>
Dependencies
================
<BLANKLINE>
NumPy Version: 2.2.5
SciPy Version: 1.16.0
Matplotlib Version: 3.10.0
ARC Version: 3.9.0
Python Version: 3.11.10
Python Install Path: ~\\miniconda3\\envs\\arc
Platform Info: Windows (AMD64)
CPU Count: 16 @ 3.91 GHz
Total System Memory: 256 GB
<BLANKLINE>
NumPy backends
================
<BLANKLINE>
blas: provided by mkl-sdl (2023.1)
lapack: provided by mkl-sdl (2023.1)
"""
home = Path.home()
install_path = inspect.getsourcefile(rydiqule)
assert install_path is not None
rydiqule_install_path = Path(install_path).parent
try:
if obscure_paths:
ryd_path = '~' / rydiqule_install_path.relative_to(home)
else:
ryd_path = rydiqule_install_path
except ValueError:
ryd_path = rydiqule_install_path
python_install_path = Path(sys.executable).parent
try:
if obscure_paths:
py_path = '~' / python_install_path.relative_to(home)
else:
py_path = python_install_path
except ValueError:
py_path = python_install_path
header = """
Rydiqule
================
"""
print(header)
print(f'Rydiqule Version: {rydiqule.__version__:s}')
print(f'Installation Path: {ryd_path}')
dep_header = """
Dependencies
================
"""
print(dep_header)
print(f'NumPy Version: {version("numpy"):s}')
print(f'SciPy Version: {version("scipy"):s}')
print(f'Matplotlib Version: {version("matplotlib"):s}')
print(f"ARC Version: {version('arc-alkali-rydberg-calculator'):s}")
print(f'Python Version: {platform.python_version():s}')
print(f'Python Install Path: {py_path}')
print(f'Platform Info: {platform.system():s} ({platform.machine():s})')
print(f'CPU Count and Freq: {os.cpu_count():d} @ {psutil.cpu_freq().current*1e-3:.2f} GHz')
print(f'Total System Memory: {psutil.virtual_memory().total/1024**3:.0f} GB')
if show_numpy_config:
print('\n NumPy backends\n ================\n')
import numpy
config = numpy.show_config('dicts')
for dep, info in config['Build Dependencies'].items():
print(f"{dep}: provided by {info['name']} ({info['version']})")
if __name__ == "__main__":
about()