-
-
Notifications
You must be signed in to change notification settings - Fork 330
feat: add print_debug_info
function
#2913
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 7 commits
5020d13
35ef9a8
35d0c86
a0ac6b6
809c7a0
2939e16
6344c0b
2268275
7df75ac
e8afd1d
adb361b
f1a2495
4550a5f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Added a `print_debug_info` function for bug reports. |
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
|
@@ -36,6 +36,50 @@ | |||||||
# in case setuptools scm screw up and find version to be 0.0.0 | ||||||||
assert not __version__.startswith("0.0.0") | ||||||||
|
||||||||
|
||||||||
def print_debug_info() -> None: | ||||||||
""" | ||||||||
Print version info for use in bug reports. | ||||||||
""" | ||||||||
import platform | ||||||||
from importlib.metadata import version | ||||||||
|
||||||||
def print_packages(packages: list[str]) -> None: | ||||||||
for package in packages: | ||||||||
try: | ||||||||
print(f"{package}: {version(package)}") | ||||||||
except ModuleNotFoundError: | ||||||||
continue | ||||||||
|
||||||||
required = [ | ||||||||
"packaging", | ||||||||
"numpy", | ||||||||
"numcodecs", | ||||||||
"typing_extensions", | ||||||||
"donfig", | ||||||||
] | ||||||||
optional = [ | ||||||||
"botocore", | ||||||||
"cupy-cuda12x", | ||||||||
"fsspec", | ||||||||
"numcodecs", | ||||||||
"s3fs", | ||||||||
"gcsfs", | ||||||||
"universal-pathlib", | ||||||||
"rich", | ||||||||
"obstore", | ||||||||
] | ||||||||
|
||||||||
print(f"platform: {platform.platform()}") | ||||||||
print(f"python: {platform.python_version()}\n") | ||||||||
|
||||||||
print(f"zarr: {__version__}\n") | ||||||||
print("Required dependencies:") | ||||||||
dstansby marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||
print_packages(required) | ||||||||
dstansby marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||
print("Optional dependencies:") | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, I didn't think about the "putting this into markdown on GitHub stage" 🤦 . In that case either asterisks or no change is fine by me 👍 |
||||||||
print_packages(optional) | ||||||||
|
||||||||
|
||||||||
__all__ = [ | ||||||||
"Array", | ||||||||
"AsyncArray", | ||||||||
|
@@ -65,6 +109,7 @@ | |||||||
"open_consolidated", | ||||||||
"open_group", | ||||||||
"open_like", | ||||||||
"print_debug_info", | ||||||||
"save", | ||||||||
"save_array", | ||||||||
"save_group", | ||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
import pytest | ||
|
||
import zarr | ||
|
||
|
||
|
@@ -9,3 +11,19 @@ def test_exports() -> None: | |
|
||
for export in __all__: | ||
getattr(zarr, export) | ||
|
||
|
||
def test_print_debug_info(capsys: pytest.CaptureFixture[str]) -> None: | ||
""" | ||
Ensure that print_debug_info does not raise an error | ||
""" | ||
from importlib.metadata import version | ||
|
||
from zarr import __version__, print_debug_info | ||
|
||
print_debug_info() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. to make this test a bit more meaningful, let's capture the output and assert that it matches our basic expectations. https://docs.pytest.org/en/stable/how-to/capture-stdout-stderr.html#accessing-captured-output-from-a-test-function There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I tested two outputs that should always be there. I didn't test every output because at some point that just becomes rewriting the fucntion |
||
captured = capsys.readouterr() | ||
# test that at least some of what we expect is | ||
# printed out | ||
assert f"zarr: {__version__}" in captured.out | ||
assert f"numpy: {version('numpy')}" in captured.out |
Uh oh!
There was an error while loading. Please reload this page.