44Adapted from :func:`rioxarray.show_versions` and :func:`pandas.show_versions`.
55"""
66
7- import importlib
87import platform
98import shutil
109import subprocess
1110import sys
12- from importlib .metadata import version
11+ from importlib .metadata import PackageNotFoundError , requires , version
1312from typing import TextIO
1413
1514from packaging .requirements import Requirement
@@ -25,25 +24,17 @@ def _get_clib_info() -> dict[str, str]:
2524 """
2625 Get information about the GMT shared library.
2726 """
28- with Session () as ses :
29- return ses .info
27+ with Session () as lib :
28+ return lib .info
3029
3130
3231def _get_module_version (modname : str ) -> str | None :
3332 """
3433 Get version information of a Python module.
3534 """
3635 try :
37- if modname in sys .modules :
38- module = sys .modules [modname ]
39- else :
40- module = importlib .import_module (modname )
41-
42- try :
43- return module .__version__
44- except AttributeError :
45- return module .version
46- except ImportError :
36+ return version (modname )
37+ except PackageNotFoundError :
4738 return None
4839
4940
@@ -85,13 +76,12 @@ def _check_ghostscript_version(gs_version: str | None) -> str | None:
8576 f"Ghostscript v{ gs_version } has known bugs. "
8677 "Please consider upgrading to version v10.02 or later."
8778 )
88- case v if v >= Version ("10.02" ):
89- if Version (__gmt_version__ ) < Version ("6.5.0" ):
90- return (
91- f"GMT v{ __gmt_version__ } doesn't support Ghostscript "
92- f"v{ gs_version } . Please consider upgrading to GMT>=6.5.0 or "
93- "downgrading to Ghostscript v9.56."
94- )
79+ case v if v >= Version ("10.02" ) and Version (__gmt_version__ ) < Version ("6.5.0" ):
80+ return (
81+ f"GMT v{ __gmt_version__ } doesn't support Ghostscript v{ gs_version } . "
82+ "Please consider upgrading to GMT>=6.5.0 or downgrading to Ghostscript "
83+ "v9.56."
84+ )
9585 return None
9686
9787
@@ -109,22 +99,14 @@ def show_versions(file: TextIO | None = sys.stdout):
10999 It also warns users if the installed Ghostscript version has serious bugs or is
110100 incompatible with the installed GMT version.
111101 """
112-
113102 sys_info = {
114103 "python" : sys .version .replace ("\n " , " " ),
115104 "executable" : sys .executable ,
116105 "machine" : platform .platform (),
117106 }
118- dep_info = {
119- Requirement (v ).name : _get_module_version (Requirement (v ).name )
120- for v in importlib .metadata .requires ("pygmt" ) # type: ignore[union-attr]
121- }
122- dep_info .update (
123- {
124- "gdal" : _get_module_version ("osgeo.gdal" ),
125- "ghostscript" : _get_ghostscript_version (),
126- }
127- )
107+ requirements = [Requirement (v ).name for v in requires ("pygmt" )] + ["gdal" ] # type: ignore[union-attr]
108+ dep_info = {name : _get_module_version (name ) for name in requirements }
109+ dep_info .update ({"ghostscript" : _get_ghostscript_version ()})
128110
129111 lines = []
130112 lines .append ("PyGMT information:" )
0 commit comments