From c57fda449972b8c1f8986923195b4d4f002ae6fe Mon Sep 17 00:00:00 2001 From: s-piri Date: Thu, 12 Feb 2026 15:53:58 +1100 Subject: [PATCH] refactor: replace deprecated pkg_resources with importlib.metadata --- setup/setup_common.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/setup/setup_common.py b/setup/setup_common.py index 5f13a2a..d37a807 100644 --- a/setup/setup_common.py +++ b/setup/setup_common.py @@ -5,7 +5,7 @@ import shutil import datetime import subprocess import re -import pkg_resources +import importlib.metadata log = logging.getLogger("sd") @@ -602,19 +602,28 @@ def installed(package, friendly: str = None): pkg_name, pkg_version = pkg.strip(), None # Attempt to find the installed package by its name - spec = pkg_resources.working_set.by_key.get(pkg_name, None) + try: + spec = importlib.metadata.distribution(pkg_name) + except importlib.metadata.PackageNotFoundError: + spec = None + if spec is None: # Try again with lowercase name - spec = pkg_resources.working_set.by_key.get(pkg_name.lower(), None) + try: + spec = importlib.metadata.distribution(pkg_name.lower()) + except importlib.metadata.PackageNotFoundError: + spec = None + if spec is None: # Try replacing underscores with dashes - spec = pkg_resources.working_set.by_key.get( - pkg_name.replace("_", "-"), None - ) + try: + spec = importlib.metadata.distribution(pkg_name.replace("_", "-")) + except importlib.metadata.PackageNotFoundError: + spec = None if spec is not None: # Package is found, check version - version = pkg_resources.get_distribution(pkg_name).version + version = spec.version log.debug(f"Package version found: {pkg_name} {version}") if pkg_version is not None: