From f547ed0b379ef70a3bda5e77f66de95ec2332ddf Mon Sep 17 00:00:00 2001 From: Stephan Hoyer Date: Tue, 13 Nov 2018 17:51:13 -0800 Subject: [PATCH] Add libnetcdf, libhdf5, pydap and cfgrib to xarray.show_versions() (#2555) * Add libnetcdf, libhdf5, pydap and cfgrib to xarray.show_versions() * More fixup * Show full Python version string --- xarray/util/print_versions.py | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/xarray/util/print_versions.py b/xarray/util/print_versions.py index 18ce40a6fae..5459e67e603 100755 --- a/xarray/util/print_versions.py +++ b/xarray/util/print_versions.py @@ -44,7 +44,7 @@ def get_sys_info(): (sysname, nodename, release, version, machine, processor) = platform.uname() blob.extend([ - ("python", "%d.%d.%d.%s.%s" % sys.version_info[:]), + ("python", sys.version), ("python-bits", struct.calcsize("P") * 8), ("OS", "%s" % (sysname)), ("OS-release", "%s" % (release)), @@ -63,9 +63,27 @@ def get_sys_info(): return blob +def netcdf_and_hdf5_versions(): + libhdf5_version = None + libnetcdf_version = None + try: + import netCDF4 + libhdf5_version = netCDF4.__hdf5libversion__ + libnetcdf_version = netCDF4.__netcdf4libversion__ + except ImportError: + try: + import h5py + libhdf5_version = h5py.__hdf5libversion__ + except ImportError: + pass + return [('libhdf5', libhdf5_version), ('libnetcdf', libnetcdf_version)] + + def show_versions(as_json=False): sys_info = get_sys_info() + sys_info.extend(netcdf_and_hdf5_versions()) + deps = [ # (MODULE_NAME, f(mod) -> mod version) ("xarray", lambda mod: mod.__version__), @@ -74,7 +92,7 @@ def show_versions(as_json=False): ("scipy", lambda mod: mod.__version__), # xarray optionals ("netCDF4", lambda mod: mod.__version__), - # ("pydap", lambda mod: mod.version.version), + ("pydap", lambda mod: mod.__version__), ("h5netcdf", lambda mod: mod.__version__), ("h5py", lambda mod: mod.__version__), ("Nio", lambda mod: mod.__version__), @@ -82,6 +100,7 @@ def show_versions(as_json=False): ("cftime", lambda mod: mod.__version__), ("PseudonetCDF", lambda mod: mod.__version__), ("rasterio", lambda mod: mod.__version__), + ("cfgrib", lambda mod: mod.__version__), ("iris", lambda mod: mod.__version__), ("bottleneck", lambda mod: mod.__version__), ("cyordereddict", lambda mod: mod.__version__), @@ -107,10 +126,14 @@ def show_versions(as_json=False): mod = sys.modules[modname] else: mod = importlib.import_module(modname) - ver = ver_f(mod) - deps_blob.append((modname, ver)) except Exception: deps_blob.append((modname, None)) + else: + try: + ver = ver_f(mod) + deps_blob.append((modname, ver)) + except Exception: + deps_blob.append((modname, 'installed')) if (as_json): try: