Skip to content

Commit 56cec5b

Browse files
authored
fix version parsing (#3016)
1 parent b63899a commit 56cec5b

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

install.py

+7-10
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,14 @@
55
import shutil
66
import platform
77
from pathlib import Path
8-
from typing import Tuple, Optional
8+
from typing import Optional
9+
from packaging.version import parse
910

1011

1112
repo_root = Path(__file__).parent
1213
main_req_file = repo_root / "requirements.txt"
1314

1415

15-
def comparable_version(version: str) -> Tuple:
16-
return tuple(version.split("."))
17-
18-
1916
def get_installed_version(package: str) -> Optional[str]:
2017
try:
2118
return metadata.version(package)
@@ -44,19 +41,19 @@ def install_requirements(req_file):
4441
elif ">=" in package:
4542
package_name, package_version = package.split(">=")
4643
installed_version = get_installed_version(package_name)
47-
if not installed_version or comparable_version(
44+
if not installed_version or parse(
4845
installed_version
49-
) < comparable_version(package_version):
46+
) < parse(package_version):
5047
launch.run_pip(
5148
f'install -U "{package}"',
5249
f"sd-webui-controlnet requirement: changing {package_name} version from {installed_version} to {package_version}",
5350
)
5451
elif "<=" in package:
5552
package_name, package_version = package.split("<=")
5653
installed_version = get_installed_version(package_name)
57-
if not installed_version or comparable_version(
54+
if not installed_version or parse(
5855
installed_version
59-
) > comparable_version(package_version):
56+
) > parse(package_version):
6057
launch.run_pip(
6158
f'install "{package_name}=={package_version}"',
6259
f"sd-webui-controlnet requirement: changing {package_name} version from {installed_version} to {package_version}",
@@ -94,7 +91,7 @@ def try_install_from_wheel(pkg_name: str, wheel_url: str, version: Optional[str]
9491
if version is None:
9592
return
9693
# Version requirement already satisfied.
97-
if comparable_version(current_version) >= comparable_version(version):
94+
if parse(current_version) >= parse(version):
9895
return
9996

10097
try:

0 commit comments

Comments
 (0)