"""Utility methods to print system info for debuggingadapted from :func:`sklearn.utils._show_versions`which was adapted from :func:`pandas.show_versions`"""importimportlib.metadataimportplatformimportsysdef_get_sys_info():"""System information Return ------ sys_info : dict system and Python version information """blob=[("python",sys.version.replace("\n"," ")),("executable",sys.executable),("machine",platform.platform()),]returndict(blob)def_get_proj_info():"""Information on system PROJ Returns ------- proj_info: dict system PROJ information """# pylint: disable=import-outside-toplevelimportpyprojfrompyproj.databaseimportget_database_metadatafrompyproj.exceptionsimportDataDirErrortry:data_dir=pyproj.datadir.get_data_dir()exceptDataDirError:data_dir=Noneblob=[("pyproj",pyproj.__version__),("PROJ (runtime)",pyproj.__proj_version__),("PROJ (compiled)",pyproj.__proj_compiled_version__),("data dir",data_dir),("user_data_dir",pyproj.datadir.get_user_data_dir()),("PROJ DATA (recommended version)",get_database_metadata("PROJ_DATA.VERSION")),("PROJ Database",f"{get_database_metadata('DATABASE.LAYOUT.VERSION.MAJOR')}."f"{get_database_metadata('DATABASE.LAYOUT.VERSION.MINOR')}",),("EPSG Database",f"{get_database_metadata('EPSG.VERSION')} "f"[{get_database_metadata('EPSG.DATE')}]",),("ESRI Database",f"{get_database_metadata('ESRI.VERSION')} "f"[{get_database_metadata('ESRI.DATE')}]",),("IGNF Database",f"{get_database_metadata('IGNF.VERSION')} "f"[{get_database_metadata('IGNF.DATE')}]",),]returndict(blob)def_get_deps_info():"""Overview of the installed version of main dependencies Returns ------- deps_info: dict version information on relevant Python libraries """deps=["certifi","Cython","setuptools","pip"]defget_version(module):try:returnimportlib.metadata.version(module)exceptimportlib.metadata.PackageNotFoundError:returnNonereturn{dep:get_version(dep)fordepindeps}def_print_info_dict(info_dict):"""Print the information dictionary"""forkey,statininfo_dict.items():print(f"{key:>10}: {stat}")
[docs]defshow_versions():""" .. versionadded:: 2.2.1 Print useful debugging information Example ------- > python -c "import pyproj; pyproj.show_versions()" """print("pyproj info:")_print_info_dict(_get_proj_info())print("\nSystem:")_print_info_dict(_get_sys_info())print("\nPython deps:")_print_info_dict(_get_deps_info())