Skip to content

Commit 1b7360d

Browse files
committed
CLN: Deduplicate show_versions
1 parent e8132a2 commit 1b7360d

File tree

1 file changed

+51
-50
lines changed

1 file changed

+51
-50
lines changed

pandas/util/_print_versions.py

Lines changed: 51 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import codecs
2-
import importlib
32
import locale
43
import os
54
import platform
65
import struct
76
import subprocess
87
import sys
98

9+
from pandas.compat._optional import _get_version, import_optional_dependency
10+
1011

1112
def get_sys_info():
1213
"Returns system information as a dict"
@@ -60,56 +61,54 @@ def show_versions(as_json=False):
6061
sys_info = get_sys_info()
6162

6263
deps = [
63-
# (MODULE_NAME, f(mod) -> mod version)
64-
("pandas", lambda mod: mod.__version__),
65-
("pytest", lambda mod: mod.__version__),
66-
("pip", lambda mod: mod.__version__),
67-
("setuptools", lambda mod: mod.__version__),
68-
("Cython", lambda mod: mod.__version__),
69-
("numpy", lambda mod: mod.version.version),
70-
("scipy", lambda mod: mod.version.version),
71-
("pyarrow", lambda mod: mod.__version__),
72-
("xarray", lambda mod: mod.__version__),
73-
("IPython", lambda mod: mod.__version__),
74-
("sphinx", lambda mod: mod.__version__),
75-
("patsy", lambda mod: mod.__version__),
76-
("dateutil", lambda mod: mod.__version__),
77-
("pytz", lambda mod: mod.VERSION),
78-
("blosc", lambda mod: mod.__version__),
79-
("bottleneck", lambda mod: mod.__version__),
80-
("tables", lambda mod: mod.__version__),
81-
("numexpr", lambda mod: mod.__version__),
82-
("feather", lambda mod: mod.__version__),
83-
("matplotlib", lambda mod: mod.__version__),
84-
("openpyxl", lambda mod: mod.__version__),
85-
("xlrd", lambda mod: mod.__VERSION__),
86-
("xlwt", lambda mod: mod.__VERSION__),
87-
("xlsxwriter", lambda mod: mod.__version__),
88-
("lxml.etree", lambda mod: mod.__version__),
89-
("bs4", lambda mod: mod.__version__),
90-
("html5lib", lambda mod: mod.__version__),
91-
("sqlalchemy", lambda mod: mod.__version__),
92-
("pymysql", lambda mod: mod.__version__),
93-
("psycopg2", lambda mod: mod.__version__),
94-
("jinja2", lambda mod: mod.__version__),
95-
("s3fs", lambda mod: mod.__version__),
96-
("fastparquet", lambda mod: mod.__version__),
97-
("pandas_gbq", lambda mod: mod.__version__),
98-
("pandas_datareader", lambda mod: mod.__version__),
99-
("gcsfs", lambda mod: mod.__version__),
64+
"pandas",
65+
"pytest",
66+
"pip",
67+
"setuptools",
68+
"Cython",
69+
"numpy",
70+
"scipy",
71+
"pyarrow",
72+
"xarray",
73+
"IPython",
74+
"sphinx",
75+
"patsy",
76+
"dateutil",
77+
"pytz",
78+
"blosc",
79+
"bottleneck",
80+
"tables",
81+
"numexpr",
82+
"feather",
83+
"matplotlib",
84+
"openpyxl",
85+
"xlrd",
86+
"xlwt",
87+
"xlsxwriter",
88+
"lxml.etree",
89+
"bs4",
90+
"html5lib",
91+
"sqlalchemy",
92+
"pymysql",
93+
"psycopg2",
94+
"jinja2",
95+
"s3fs",
96+
"fastparquet",
97+
"pandas_gbq",
98+
"pandas_datareader",
99+
"gcsfs",
100100
]
101101

102102
deps_blob = list()
103-
for (modname, ver_f) in deps:
104-
try:
105-
if modname in sys.modules:
106-
mod = sys.modules[modname]
107-
else:
108-
mod = importlib.import_module(modname)
109-
ver = ver_f(mod)
110-
deps_blob.append((modname, ver))
111-
except ImportError:
112-
deps_blob.append((modname, None))
103+
for modname in deps:
104+
mod = import_optional_dependency(modname,
105+
raise_on_missing=False,
106+
on_version="ignore")
107+
if mod:
108+
ver = _get_version(mod)
109+
else:
110+
ver = None
111+
deps_blob.append((modname, ver))
113112

114113
if (as_json):
115114
try:
@@ -126,16 +125,18 @@ def show_versions(as_json=False):
126125
json.dump(j, f, indent=2)
127126

128127
else:
128+
maxlen = max(len(x) for x in deps)
129+
tpl = '{{k:<{maxlen}}}: {{stat}}'.format(maxlen=maxlen)
129130

130131
print("\nINSTALLED VERSIONS")
131132
print("------------------")
132133

133134
for k, stat in sys_info:
134-
print("{k}: {stat}".format(k=k, stat=stat))
135+
print(tpl.format(k=k, stat=stat))
135136

136137
print("")
137138
for k, stat in deps_blob:
138-
print("{k}: {stat}".format(k=k, stat=stat))
139+
print(tpl.format(k=k, stat=stat))
139140

140141

141142
def main():

0 commit comments

Comments
 (0)