Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/gpu_tracker/_helper_classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import sqlalchemy.orm as sqlorm
import enum
import tqdm
import logging as log

_SUMMARY_STATS = ['min', 'max', 'mean', 'std']

Expand All @@ -36,6 +37,12 @@ def is_available(cls) -> bool | None:
return False
except FileNotFoundError:
return None
except PermissionError:
log.warning(
f'gpu-tracker encountered a PermissionError when checking if "{cls.command}" is installed. '
'You might have a directory in your PATH environment variable that lacks execute permissions.'
)
return None

@classmethod
@abc.abstractmethod
Expand Down
10 changes: 10 additions & 0 deletions tests/test_tracker.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,3 +402,13 @@ def test_formatting_before_tracking_stops():
'Cannot display the tracker in string or JSON format before tracking completes. Exit the content manager or call the stop() '
'method before calling to_json() or str()'
)


def test_is_available_permission_error(mocker, caplog):
mocker.patch('gpu_tracker._helper_classes.subp.check_output', side_effect=PermissionError)
# noinspection PyProtectedMember
from gpu_tracker._helper_classes import _NvidiaQuerier
result = _NvidiaQuerier.is_available()
assert result is None
assert 'PermissionError' in caplog.text
assert 'nvidia-smi' in caplog.text
Loading