Skip to content

Commit 3bd19e6

Browse files
Manuel MuradasHorlogeSkynet
authored andcommitted
Handle CalledProcessError when calling uname
Usually, when `distro` is used in Windows, it returns nothing. Any call to `lsb_release`, `uname', etc, raises a `[[WinError 2] The system cannot find the file specified` error, which is properly handled. However, in a particular environment where I've run it, I've found that the call to `uname` raises a `CalledProcessError`, because a Policy or a Security Control is injecting a non-zero return code: ``` t=2024-10-04T15:13:39+0200 Command '('uname', '-rs')' returned non-zero exit status 3221225794. Traceback (most recent call last): File "C:\...\main.py", line 123, in __check_supported_platform distro_id = distro.id() ^^^^^^^^^^^ File "C:\...\site-packages\distro\distro.py", line 284, in id return _distro.id() ^^^^^^^^^^^^ File "C:\...\site-packages\distro\distro.py", line 855, in id distro_id = self.uname_attr("id") ^^^^^^^^^^^^^^^^^^^^^ File "C:\...\site-packages\distro\distro.py", line 1088, in uname_attr return self._uname_info.get(attribute, "") ^^^^^^^^^^^^^^^^ File "C:\...\lib\functools.py", line 995, in __get__ val = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "C:\...\site-packages\distro\distro.py", line 1202, in _uname_info stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\...\lib\subprocess.py", line 466, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\...\lib\subprocess.py", line 571, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '('uname', '-rs')' returned non-zero exit status 3221225794. ``` We do handle `CalledProcessError` in other calls, so I'm adding to `uname` too.
1 parent 7ce285c commit 3bd19e6

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/distro/distro.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1204,7 +1204,7 @@ def _uname_info(self) -> Dict[str, str]:
12041204
try:
12051205
cmd = ("uname", "-rs")
12061206
stdout = subprocess.check_output(cmd, stderr=subprocess.DEVNULL)
1207-
except OSError:
1207+
except (OSError, subprocess.CalledProcessError):
12081208
return {}
12091209
content = self._to_str(stdout).splitlines()
12101210
return self._parse_uname_content(content)

0 commit comments

Comments
 (0)