|
5 | 5 | import shutil
|
6 | 6 | import platform
|
7 | 7 | from pathlib import Path
|
8 |
| -from typing import Tuple, Optional |
| 8 | +from typing import Optional |
| 9 | +from packaging.version import parse |
9 | 10 |
|
10 | 11 |
|
11 | 12 | repo_root = Path(__file__).parent
|
12 | 13 | main_req_file = repo_root / "requirements.txt"
|
13 | 14 |
|
14 | 15 |
|
15 |
| -def comparable_version(version: str) -> Tuple: |
16 |
| - return tuple(version.split(".")) |
17 |
| - |
18 |
| - |
19 | 16 | def get_installed_version(package: str) -> Optional[str]:
|
20 | 17 | try:
|
21 | 18 | return metadata.version(package)
|
@@ -44,19 +41,19 @@ def install_requirements(req_file):
|
44 | 41 | elif ">=" in package:
|
45 | 42 | package_name, package_version = package.split(">=")
|
46 | 43 | installed_version = get_installed_version(package_name)
|
47 |
| - if not installed_version or comparable_version( |
| 44 | + if not installed_version or parse( |
48 | 45 | installed_version
|
49 |
| - ) < comparable_version(package_version): |
| 46 | + ) < parse(package_version): |
50 | 47 | launch.run_pip(
|
51 | 48 | f'install -U "{package}"',
|
52 | 49 | f"sd-webui-controlnet requirement: changing {package_name} version from {installed_version} to {package_version}",
|
53 | 50 | )
|
54 | 51 | elif "<=" in package:
|
55 | 52 | package_name, package_version = package.split("<=")
|
56 | 53 | installed_version = get_installed_version(package_name)
|
57 |
| - if not installed_version or comparable_version( |
| 54 | + if not installed_version or parse( |
58 | 55 | installed_version
|
59 |
| - ) > comparable_version(package_version): |
| 56 | + ) > parse(package_version): |
60 | 57 | launch.run_pip(
|
61 | 58 | f'install "{package_name}=={package_version}"',
|
62 | 59 | 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]
|
94 | 91 | if version is None:
|
95 | 92 | return
|
96 | 93 | # Version requirement already satisfied.
|
97 |
| - if comparable_version(current_version) >= comparable_version(version): |
| 94 | + if parse(current_version) >= parse(version): |
98 | 95 | return
|
99 | 96 |
|
100 | 97 | try:
|
|
0 commit comments