diff --git a/pygmt/__init__.py b/pygmt/__init__.py index 162d688e7a3..fc1981eebef 100644 --- a/pygmt/__init__.py +++ b/pygmt/__init__.py @@ -146,17 +146,6 @@ def _get_ghostscript_version(): continue return None - def _get_gmt_version(): - """ - Get GMT version. - """ - try: - return subprocess.check_output( - ["gmt", "--version"], universal_newlines=True - ).strip() - except FileNotFoundError: - return None - sys_info = { "python": sys.version.replace("\n", " "), "executable": sys.executable, @@ -176,7 +165,6 @@ def _get_gmt_version(): for modname in deps: print(f" {modname}: {_get_module_version(modname)}") print(f" ghostscript: {_get_ghostscript_version()}") - print(f" gmt: {_get_gmt_version()}") print_clib_info() diff --git a/pygmt/clib/session.py b/pygmt/clib/session.py index 03902233bac..83373db1698 100644 --- a/pygmt/clib/session.py +++ b/pygmt/clib/session.py @@ -158,7 +158,8 @@ def info(self): self._info = { # pylint: disable=attribute-defined-outside-init "version": self.get_default("API_VERSION"), "padding": self.get_default("API_PAD"), - "binary dir": self.get_default("API_BINDIR"), + # API_BINDIR points to the directory of the Python interpreter + # "binary dir": self.get_default("API_BINDIR"), "share dir": self.get_default("API_SHAREDIR"), # This segfaults for some reason # 'data dir': self.get_default("API_DATADIR"), @@ -169,6 +170,9 @@ def info(self): # "image layout": self.get_default("API_IMAGE_LAYOUT"), "grid layout": self.get_default("API_GRID_LAYOUT"), } + # API_BIN_VERSION is new in GMT 6.4.0. + if Version(self._info["version"]) >= Version("6.4.0"): + self._info["binary version"] = self.get_default("API_BIN_VERSION") return self._info def __enter__(self): diff --git a/pygmt/tests/test_clib.py b/pygmt/tests/test_clib.py index 5bf1b7f2248..9120af22d06 100644 --- a/pygmt/tests/test_clib.py +++ b/pygmt/tests/test_clib.py @@ -873,7 +873,10 @@ def mock_defaults(api, name, value): # pylint: disable=unused-argument """ Put 'bla' in the value buffer. """ - value.value = b"bla" + if name == b"API_VERSION": + value.value = b"1.2.3" + else: + value.value = b"bla" return 0 ses = clib.Session() @@ -881,8 +884,11 @@ def mock_defaults(api, name, value): # pylint: disable=unused-argument with mock(ses, "GMT_Get_Default", mock_func=mock_defaults): # Check for an empty dictionary assert ses.info - for value in ses.info.values(): - assert value == "bla" + for key, value in ses.info.items(): + if key == "version": + assert value == "1.2.3" + else: + assert value == "bla" ses.destroy()