From a5fcf21a1204223d58fed730a025e1383f0c697c Mon Sep 17 00:00:00 2001 From: correctmost <134317971+correctmost@users.noreply.github.com> Date: Mon, 10 Mar 2025 07:04:41 -0400 Subject: [PATCH] Speed up _parse_package_output by caching normalized key strings (#3239) This commit helps avoid ~260,000 chained strip(), lower(), and replace() sequences. --- archinstall/lib/packages/packages.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/archinstall/lib/packages/packages.py b/archinstall/lib/packages/packages.py index 885bb3b8..27d834ac 100644 --- a/archinstall/lib/packages/packages.py +++ b/archinstall/lib/packages/packages.py @@ -139,6 +139,11 @@ def list_available_packages( return packages +@lru_cache(maxsize=128) +def _normalize_key_name(key: str) -> str: + return key.strip().lower().replace(' ', '_') + + def _parse_package_output[PackageType: (AvailablePackage, LocalPackage)]( package_meta: list[str], cls: type[PackageType] @@ -148,7 +153,7 @@ def _parse_package_output[PackageType: (AvailablePackage, LocalPackage)]( for line in package_meta: if ':' in line: key, value = line.split(':', 1) - key = key.strip().lower().replace(' ', '_') + key = _normalize_key_name(key) package[key] = value.strip() return cls.model_validate(package)