From 706ffd8e8ede9617f406e9d9ee5a0d7c8c2eae68 Mon Sep 17 00:00:00 2001 From: NataliaPerez08 Date: Fri, 28 Aug 2026 22:23:14 -0600 Subject: [PATCH] Handle leading zeros in basic version parsing --- netutils/os_version.py | 4 ++-- tests/unit/test_os_versions.py | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/netutils/os_version.py b/netutils/os_version.py index 3edc07f4..8e3574fb 100644 --- a/netutils/os_version.py +++ b/netutils/os_version.py @@ -258,9 +258,9 @@ def _basic_version_metadata(version: str) -> t.Dict[str, t.Any]: basic_regex: re.Pattern[str] = re.compile( r""" ^ - (?P0|[1-9]\d*) + 0*(?P\d+) \. - (?P0|[1-9]\d*)? + (?:0*(?P\d+))? .*$ """, re.VERBOSE, diff --git a/tests/unit/test_os_versions.py b/tests/unit/test_os_versions.py index e647fd6e..e4a38d89 100755 --- a/tests/unit/test_os_versions.py +++ b/tests/unit/test_os_versions.py @@ -50,6 +50,30 @@ "vendor_metadata": False, }, }, + { + "sent": {"vendor": "cisco", "platform": "ios", "version": "03.03.05SE"}, + "received": { + "major": "3", + "minor": "3", + "vendor_metadata": False, + }, + }, + { + "sent": {"vendor": "cisco", "platform": "ios", "version": "3.03.05SE"}, + "received": { + "major": "3", + "minor": "3", + "vendor_metadata": False, + }, + }, + { + "sent": {"vendor": "cisco", "platform": "ios", "version": "3.3.05SE"}, + "received": { + "major": "3", + "minor": "3", + "vendor_metadata": False, + }, + }, # Juniper Junos uses a custom parser { "sent": {"vendor": "juniper", "platform": "junos", "version": "12.4R"},