Convert a version string into a tuple of integers. This method is usually used for comparing two versions. For pre-release versions: alpha < beta < rc. Args: version_str (str): The version string. length (int): The maximum number of version levels. Default: 4. Retu
(version_str: str, length: int = 4)
| 15 | |
| 16 | |
| 17 | def digit_version(version_str: str, length: int = 4): |
| 18 | """Convert a version string into a tuple of integers. |
| 19 | |
| 20 | This method is usually used for comparing two versions. For pre-release |
| 21 | versions: alpha < beta < rc. |
| 22 | |
| 23 | Args: |
| 24 | version_str (str): The version string. |
| 25 | length (int): The maximum number of version levels. Default: 4. |
| 26 | |
| 27 | Returns: |
| 28 | tuple[int]: The version info in digits (integers). |
| 29 | """ |
| 30 | version = parse(version_str) |
| 31 | assert version.release, f'failed to parse version {version_str}' |
| 32 | release = list(version.release) |
| 33 | release = release[:length] |
| 34 | if len(release) < length: |
| 35 | release = release + [0] * (length - len(release)) |
| 36 | if version.is_prerelease: |
| 37 | mapping = {'a': -3, 'b': -2, 'rc': -1} |
| 38 | val = -4 |
| 39 | # version.pre can be None |
| 40 | if version.pre: |
| 41 | if version.pre[0] not in mapping: |
| 42 | warnings.warn(f'unknown prerelease version {version.pre[0]}, ' |
| 43 | 'version checking may go wrong') |
| 44 | else: |
| 45 | val = mapping[version.pre[0]] |
| 46 | release.extend([val, version.pre[-1]]) |
| 47 | else: |
| 48 | release.extend([val, 0]) |
| 49 | |
| 50 | elif version.is_postrelease: |
| 51 | release.extend([1, version.post]) |
| 52 | else: |
| 53 | release.extend([0, 0]) |
| 54 | return tuple(release) |
| 55 | |
| 56 | |
| 57 | mmcv_min_version = digit_version(MMCV_MIN) |
no outgoing calls