Skip to content

Commit d610d81

Browse files
authored
fix: Make skore.show_versions() robust to version specifiers in requirements (#1056)
Make `skore.show_versions()` robust to version specifiers in the requirements defined in `pyproject.toml`. Closes #987
1 parent dae1b53 commit d610d81

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

skore/src/skore/utils/_show_versions.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import importlib
88
import platform
9+
import re
910
import sys
1011

1112

@@ -47,7 +48,9 @@ def _get_deps_info():
4748

4849
requirements = importlib.metadata.requires("skore")
4950
for requirement in filter(lambda r: "; extra" not in r, requirements):
50-
deps.append(requirement)
51+
# Extract just the package name before any version specifiers
52+
package_name = re.split(r"[<>=~!]", requirement)[0].strip()
53+
deps.append(package_name)
5154

5255
deps_info = {
5356
"skore": version("skore"),

skore/tests/unit/utils/test_show_versions.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,28 @@ def test_get_deps_info():
1818

1919

2020
def test_show_versions(capfd):
21+
"""Check that we have the expected packages in the output of `show_versions()`.
22+
23+
We use `:` in the assertion to be sure that we are robust to package
24+
version specifiers.
25+
26+
Non-regression test for:
27+
https://github.com/probabl-ai/skore/issues/987
28+
"""
2129
show_versions()
2230
captured = capfd.readouterr()
23-
assert "python" in captured.out
24-
assert "executable" in captured.out
25-
assert "machine" in captured.out
26-
assert "pip" in captured.out
27-
assert "setuptools" in captured.out
28-
assert "skore" in captured.out
31+
assert "python:" in captured.out
32+
assert "executable:" in captured.out
33+
assert "machine:" in captured.out
34+
assert "skore:" in captured.out
35+
assert "pip:" in captured.out
36+
assert "setuptools:" in captured.out
37+
assert "diskcache:" in captured.out
38+
assert "fastapi:" in captured.out
39+
assert "numpy:" in captured.out
40+
assert "plotly:" in captured.out
41+
assert "pyarrow:" in captured.out
42+
assert "rich:" in captured.out
43+
assert "scikit-learn:" in captured.out
44+
assert "skops:" in captured.out
45+
assert "uvicorn:" in captured.out

0 commit comments

Comments
 (0)