148 lines
3.7 KiB
Python
148 lines
3.7 KiB
Python
"""
|
|
Utility functions
|
|
"""
|
|
import os
|
|
import platform
|
|
import sys
|
|
|
|
from .cmdstan import (
|
|
EXTENSION,
|
|
cmdstan_path,
|
|
cmdstan_version,
|
|
cmdstan_version_before,
|
|
cxx_toolchain_path,
|
|
get_latest_cmdstan,
|
|
install_cmdstan,
|
|
set_cmdstan_path,
|
|
set_make_env,
|
|
validate_cmdstan_path,
|
|
validate_dir,
|
|
wrap_url_progress_hook,
|
|
)
|
|
from .command import do_command, returncode_msg
|
|
from .data_munging import build_xarray_data, flatten_chains
|
|
from .filesystem import (
|
|
SanitizedOrTmpFilePath,
|
|
create_named_text_file,
|
|
pushd,
|
|
windows_short_path,
|
|
)
|
|
from .json import write_stan_json
|
|
from .logging import get_logger
|
|
from .stancsv import (
|
|
check_sampler_csv,
|
|
parse_rdump_value,
|
|
read_metric,
|
|
rload,
|
|
scan_column_names,
|
|
scan_config,
|
|
scan_hmc_params,
|
|
scan_optimize_csv,
|
|
scan_sampler_csv,
|
|
scan_sampling_iters,
|
|
scan_variational_csv,
|
|
scan_warmup_iters,
|
|
)
|
|
|
|
|
|
def show_versions(output: bool = True) -> str:
|
|
"""Prints out system and dependency information for debugging"""
|
|
|
|
import importlib
|
|
import locale
|
|
import struct
|
|
|
|
deps_info = []
|
|
try:
|
|
(sysname, _, release, _, machine, processor) = platform.uname()
|
|
deps_info.extend(
|
|
[
|
|
("python", sys.version),
|
|
("python-bits", struct.calcsize("P") * 8),
|
|
("OS", f"{sysname}"),
|
|
("OS-release", f"{release}"),
|
|
("machine", f"{machine}"),
|
|
("processor", f"{processor}"),
|
|
("byteorder", f"{sys.byteorder}"),
|
|
("LC_ALL", f'{os.environ.get("LC_ALL", "None")}'),
|
|
("LANG", f'{os.environ.get("LANG", "None")}'),
|
|
("LOCALE", f"{locale.getlocale()}"),
|
|
]
|
|
)
|
|
# pylint: disable=broad-except
|
|
except Exception:
|
|
pass
|
|
|
|
try:
|
|
deps_info.append(('cmdstan_folder', cmdstan_path()))
|
|
deps_info.append(('cmdstan', str(cmdstan_version())))
|
|
# pylint: disable=broad-except
|
|
except Exception:
|
|
deps_info.append(('cmdstan', 'NOT FOUND'))
|
|
|
|
deps = ['cmdstanpy', 'pandas', 'xarray', 'tqdm', 'numpy']
|
|
for module in deps:
|
|
try:
|
|
if module in sys.modules:
|
|
mod = sys.modules[module]
|
|
else:
|
|
mod = importlib.import_module(module)
|
|
# pylint: disable=broad-except
|
|
except Exception:
|
|
deps_info.append((module, None))
|
|
else:
|
|
try:
|
|
ver = mod.__version__ # type: ignore
|
|
deps_info.append((module, ver))
|
|
# pylint: disable=broad-except
|
|
except Exception:
|
|
deps_info.append((module, "installed"))
|
|
|
|
out = 'INSTALLED VERSIONS\n---------------------\n'
|
|
for k, info in deps_info:
|
|
out += f'{k}: {info}\n'
|
|
if output:
|
|
print(out)
|
|
return " "
|
|
else:
|
|
return out
|
|
|
|
|
|
__all__ = [
|
|
'EXTENSION',
|
|
'SanitizedOrTmpFilePath',
|
|
'build_xarray_data',
|
|
'check_sampler_csv',
|
|
'cmdstan_path',
|
|
'cmdstan_version',
|
|
'cmdstan_version_before',
|
|
'create_named_text_file',
|
|
'cxx_toolchain_path',
|
|
'do_command',
|
|
'flatten_chains',
|
|
'get_latest_cmdstan',
|
|
'get_logger',
|
|
'install_cmdstan',
|
|
'parse_rdump_value',
|
|
'pushd',
|
|
'read_metric',
|
|
'returncode_msg',
|
|
'rload',
|
|
'scan_column_names',
|
|
'scan_config',
|
|
'scan_hmc_params',
|
|
'scan_optimize_csv',
|
|
'scan_sampler_csv',
|
|
'scan_sampling_iters',
|
|
'scan_variational_csv',
|
|
'scan_warmup_iters',
|
|
'set_cmdstan_path',
|
|
'set_make_env',
|
|
'show_versions',
|
|
'validate_cmdstan_path',
|
|
'validate_dir',
|
|
'windows_short_path',
|
|
'wrap_url_progress_hook',
|
|
'write_stan_json',
|
|
]
|