From 6a95f5fc3d4db3429092d58618e26cb697a96e5a Mon Sep 17 00:00:00 2001 From: pro-laxmi Date: Wed, 11 Nov 2026 23:13:09 +0530 Subject: [PATCH] fix: make os-release parser resilient to unclosed quote ValueError --- src/distro/distro.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/distro/distro.py b/src/distro/distro.py index 0dd55f2..85857ff 100755 --- a/src/distro/distro.py +++ b/src/distro/distro.py @@ -1185,10 +1185,22 @@ def _parse_os_release_content(lines: TextIO) -> Dict[str, str]: A dictionary containing all information items. """ props = {} - lexer = shlex.shlex(lines, posix=True) - lexer.whitespace_split = True + try: + lexer = shlex.shlex(lines, posix=True) + lexer.whitespace_split = True + tokens = list(lexer) + except ValueError: + if hasattr(lines, "seek"): + lines.seek(os.SEEK_SET) + tokens = [] + for line in lines: + line = line.strip() + if not line or line.startswith("#"): + continue + if "=" in line: + k, v = line.split("=", 1) + tokens.append(f"{k}={v.strip('\"\'')}") - tokens = list(lexer) for token in tokens: # At this point, all shell-like parsing has been done (i.e. # comments processed, quotes and backslash escape sequences