Capture wildcards in requirements

This commit is contained in:
erew123 authored and GitHub committed 2023-12-20 08:52:00 +00:00
1 parent af99748441
commit c657a2aac6
1 file changed
+23 -5
+23 -5
View File
@@ -10,6 +10,9 @@ try:
import textwrap import textwrap
import packaging.version import packaging.version
import packaging.specifiers import packaging.specifiers
from packaging.specifiers import SpecifierSet
from packaging.specifiers import SpecifierSet
from packaging.version import parse as parse_version
except ImportError as e: except ImportError as e:
print(f"\033[91mError importing module: {e}\033[0m\n") print(f"\033[91mError importing module: {e}\033[0m\n")
print("\033[94mPlease ensure you started the Text-generation-webUI Python environment with either\033[0m") print("\033[94mPlease ensure you started the Text-generation-webUI Python environment with either\033[0m")
@@ -59,6 +62,16 @@ def is_port_in_use(port):
return True return True
return False return False
def satisfies_wildcard(installed_version, required_version):
if '*' in required_version:
required_parts = required_version.split('.')
installed_parts = installed_version.split('.')
for req, inst in zip(required_parts, installed_parts):
if req != '*' and req != inst:
return False
return True
return False
# Function to log and print system information # Function to log and print system information
def log_system_info(): def log_system_info():
# System information # System information
@@ -153,12 +166,17 @@ def log_system_info():
for package_name, (operator, required_version) in required_packages.items(): for package_name, (operator, required_version) in required_packages.items():
installed_version = installed_packages.get(package_name, 'Not installed') installed_version = installed_packages.get(package_name, 'Not installed')
# Compare versions using packaging.version # Exclude build information (e.g., +cu118) before creating the SpecifierSet
required = packaging.version.parse(required_version) required_version_no_build = required_version.split("+")[0]
installed = packaging.version.parse(installed_version)
if '*' in required_version:
condition_met = satisfies_wildcard(installed_version, required_version)
else:
# Compare versions using packaging.version
required_specifier = SpecifierSet(f"{operator}{required_version_no_build}")
installed_version = parse_version(installed_version)
condition_met = installed_version in required_specifier
# Set color based on version comparison
condition_met = eval(f"installed {operator} required")
color_required = "\033[92m" if condition_met else "\033[91m" color_required = "\033[92m" if condition_met else "\033[91m"
color_installed = "\033[92m" if condition_met else "\033[91m" color_installed = "\033[92m" if condition_met else "\033[91m"