>>> LooseVersion("1.0") == LooseVersion("1.0") True >>> LooseVersion("1.0.1") > LooseVersion("1.0") True >>> LooseVersion("1.0.1-") == LooseVersion("1.0.1") True >>> LooseVersion("1.0.11") < LooseVersion("1.0.111") True >>> LooseVersion("foobar") > LooseVersion("
(version)
| 281 | buffer = buffer |
| 282 | |
| 283 | def LooseVersion(version): |
| 284 | """ |
| 285 | >>> LooseVersion("1.0") == LooseVersion("1.0") |
| 286 | True |
| 287 | >>> LooseVersion("1.0.1") > LooseVersion("1.0") |
| 288 | True |
| 289 | >>> LooseVersion("1.0.1-") == LooseVersion("1.0.1") |
| 290 | True |
| 291 | >>> LooseVersion("1.0.11") < LooseVersion("1.0.111") |
| 292 | True |
| 293 | >>> LooseVersion("foobar") > LooseVersion("1.0") |
| 294 | False |
| 295 | >>> LooseVersion("1.0") > LooseVersion("foobar") |
| 296 | False |
| 297 | >>> LooseVersion("3.22-mysql") == LooseVersion("3.22-mysql-ubuntu0.3") |
| 298 | True |
| 299 | >>> LooseVersion("8.0.22-0ubuntu0.20.04.2") |
| 300 | 8.000022 |
| 301 | """ |
| 302 | |
| 303 | match = re.search(r"\A(\d[\d.]*)", version or "") |
| 304 | |
| 305 | if match: |
| 306 | result = 0 |
| 307 | value = match.group(1) |
| 308 | weight = 1.0 |
| 309 | for part in value.strip('.').split('.'): |
| 310 | if part.isdigit(): |
| 311 | result += int(part) * weight |
| 312 | weight *= 1e-3 |
| 313 | else: |
| 314 | result = float("NaN") |
| 315 | |
| 316 | return result |
| 317 | |
| 318 | # NOTE: codecs.open re-implementation (deprecated in Python 3.14) |
| 319 |
no test coverage detected
searching dependent graphs…