|
1 |
| -try: |
2 |
| - from distutils.version import StrictVersion |
3 |
| -except: |
4 |
| - print(f"[ComfyUI-Manager] 'distutils' package not found. Activating fallback mode for compatibility.") |
5 |
| - class StrictVersion: |
6 |
| - def __init__(self, version_string): |
7 |
| - self.version_string = version_string |
8 |
| - self.major = 0 |
9 |
| - self.minor = 0 |
10 |
| - self.patch = 0 |
11 |
| - self.pre_release = None |
12 |
| - self.parse_version_string() |
13 |
| - |
14 |
| - def parse_version_string(self): |
15 |
| - parts = self.version_string.split('.') |
16 |
| - if not parts: |
17 |
| - raise ValueError("Version string must not be empty") |
18 |
| - |
19 |
| - self.major = int(parts[0]) |
20 |
| - self.minor = int(parts[1]) if len(parts) > 1 else 0 |
21 |
| - self.patch = int(parts[2]) if len(parts) > 2 else 0 |
22 |
| - |
23 |
| - # Handling pre-release versions if present |
24 |
| - if len(parts) > 3: |
25 |
| - self.pre_release = parts[3] |
26 |
| - |
27 |
| - def __str__(self): |
28 |
| - version = f"{self.major}.{self.minor}.{self.patch}" |
29 |
| - if self.pre_release: |
30 |
| - version += f"-{self.pre_release}" |
31 |
| - return version |
32 |
| - |
33 |
| - def __eq__(self, other): |
34 |
| - return (self.major, self.minor, self.patch, self.pre_release) == \ |
35 |
| - (other.major, other.minor, other.patch, other.pre_release) |
36 |
| - |
37 |
| - def __lt__(self, other): |
38 |
| - if (self.major, self.minor, self.patch) == (other.major, other.minor, other.patch): |
39 |
| - return self.pre_release_compare(self.pre_release, other.pre_release) < 0 |
40 |
| - return (self.major, self.minor, self.patch) < (other.major, other.minor, other.patch) |
41 |
| - |
42 |
| - @staticmethod |
43 |
| - def pre_release_compare(pre1, pre2): |
44 |
| - if pre1 == pre2: |
45 |
| - return 0 |
46 |
| - if pre1 is None: |
47 |
| - return 1 |
48 |
| - if pre2 is None: |
49 |
| - return -1 |
50 |
| - return -1 if pre1 < pre2 else 1 |
51 |
| - |
52 |
| - def __le__(self, other): |
53 |
| - return self == other or self < other |
54 |
| - |
55 |
| - def __gt__(self, other): |
56 |
| - return not self <= other |
57 |
| - |
58 |
| - def __ge__(self, other): |
59 |
| - return not self < other |
60 |
| - |
61 |
| - def __ne__(self, other): |
62 |
| - return not self == other |
| 1 | +# DON'T USE StrictVersion - cannot handle pre_release version |
| 2 | +# try: |
| 3 | +# from distutils.version import StrictVersion |
| 4 | +# except: |
| 5 | +print(f"[ComfyUI-Manager] 'distutils' package not found. Activating fallback mode for compatibility.") |
| 6 | +class StrictVersion: |
| 7 | + def __init__(self, version_string): |
| 8 | + self.version_string = version_string |
| 9 | + self.major = 0 |
| 10 | + self.minor = 0 |
| 11 | + self.patch = 0 |
| 12 | + self.pre_release = None |
| 13 | + self.parse_version_string() |
| 14 | + |
| 15 | + def parse_version_string(self): |
| 16 | + parts = self.version_string.split('.') |
| 17 | + if not parts: |
| 18 | + raise ValueError("Version string must not be empty") |
| 19 | + |
| 20 | + self.major = int(parts[0]) |
| 21 | + self.minor = int(parts[1]) if len(parts) > 1 else 0 |
| 22 | + self.patch = int(parts[2]) if len(parts) > 2 else 0 |
| 23 | + |
| 24 | + # Handling pre-release versions if present |
| 25 | + if len(parts) > 3: |
| 26 | + self.pre_release = parts[3] |
| 27 | + |
| 28 | + def __str__(self): |
| 29 | + version = f"{self.major}.{self.minor}.{self.patch}" |
| 30 | + if self.pre_release: |
| 31 | + version += f"-{self.pre_release}" |
| 32 | + return version |
| 33 | + |
| 34 | + def __eq__(self, other): |
| 35 | + return (self.major, self.minor, self.patch, self.pre_release) == \ |
| 36 | + (other.major, other.minor, other.patch, other.pre_release) |
| 37 | + |
| 38 | + def __lt__(self, other): |
| 39 | + if (self.major, self.minor, self.patch) == (other.major, other.minor, other.patch): |
| 40 | + return self.pre_release_compare(self.pre_release, other.pre_release) < 0 |
| 41 | + return (self.major, self.minor, self.patch) < (other.major, other.minor, other.patch) |
| 42 | + |
| 43 | + @staticmethod |
| 44 | + def pre_release_compare(pre1, pre2): |
| 45 | + if pre1 == pre2: |
| 46 | + return 0 |
| 47 | + if pre1 is None: |
| 48 | + return 1 |
| 49 | + if pre2 is None: |
| 50 | + return -1 |
| 51 | + return -1 if pre1 < pre2 else 1 |
| 52 | + |
| 53 | + def __le__(self, other): |
| 54 | + return self == other or self < other |
| 55 | + |
| 56 | + def __gt__(self, other): |
| 57 | + return not self <= other |
| 58 | + |
| 59 | + def __ge__(self, other): |
| 60 | + return not self < other |
| 61 | + |
| 62 | + def __ne__(self, other): |
| 63 | + return not self == other |
63 | 64 |
|
0 commit comments