From 8cda845dabe388b0b2e1752edf650205387f9545 Mon Sep 17 00:00:00 2001 From: Shaun Walbridge Date: Thu, 2 Apr 2026 21:42:10 -0400 Subject: [PATCH 1/2] use importlib machinery to check for habana plugin Not all environments have pip, and even fewer have grep (e.g. Windows platforms), and the shell command is relatively costly for larger environments. Instead, use the stdlib infrastructure with `importlib` to identify the version of `habana-torch-plugin` if it is installed. --- bitsandbytes/backends/utils.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/bitsandbytes/backends/utils.py b/bitsandbytes/backends/utils.py index 34e3d5faa..a5430f66c 100644 --- a/bitsandbytes/backends/utils.py +++ b/bitsandbytes/backends/utils.py @@ -1,4 +1,4 @@ -import subprocess +import importlib from packaging import version import torch @@ -67,17 +67,16 @@ def get_gaudi_sw_version(): """ Returns the installed version of Gaudi SW. """ - output = subprocess.run( - "pip list | grep habana-torch-plugin", - shell=True, - text=True, - capture_output=True, - ) - # If grep return nothing - if not output.stdout.strip(): - return None + try: + # if we find the spec, examine the installed version + plugin_metadata = importlib.metadata.metadata("habana-torch-plugin") + plugin_version = plugin_metadata.get("Version") + if plugin_version: + gaudi_version = version.parse(plugin_version) + except Exception: + gaudi_version = None - return version.parse(output.stdout.split("\n")[0].split()[-1]) + return gaudi_version GAUDI_SW_VER = get_gaudi_sw_version() From 29826d98ed1f3e4c90c60bddd55925d305e1f7ac Mon Sep 17 00:00:00 2001 From: Shaun Walbridge Date: Fri, 3 Apr 2026 12:15:31 -0400 Subject: [PATCH 2/2] use direct import rather than transitive --- bitsandbytes/backends/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitsandbytes/backends/utils.py b/bitsandbytes/backends/utils.py index a5430f66c..bef07169c 100644 --- a/bitsandbytes/backends/utils.py +++ b/bitsandbytes/backends/utils.py @@ -1,4 +1,4 @@ -import importlib +from importlib.metadata import metadata from packaging import version import torch @@ -69,7 +69,7 @@ def get_gaudi_sw_version(): """ try: # if we find the spec, examine the installed version - plugin_metadata = importlib.metadata.metadata("habana-torch-plugin") + plugin_metadata = metadata("habana-torch-plugin") plugin_version = plugin_metadata.get("Version") if plugin_version: gaudi_version = version.parse(plugin_version)