| |
| __version__ = '1.3.17' |
|
|
|
|
| def parse_version_info(version_str: str, length: int = 4) -> tuple: |
| """Parse a version string into a tuple. |
| |
| Args: |
| version_str (str): The version string. |
| length (int): The maximum number of version levels. Default: 4. |
| |
| Returns: |
| tuple[int | str]: The version info, e.g., "1.3.0" is parsed into |
| (1, 3, 0, 0, 0, 0), and "2.0.0rc1" is parsed into |
| (2, 0, 0, 0, 'rc', 1) (when length is set to 4). |
| """ |
| from packaging.version import parse |
| version = parse(version_str) |
| assert version.release, f'failed to parse version {version_str}' |
| release = list(version.release) |
| release = release[:length] |
| if len(release) < length: |
| release = release + [0] * (length - len(release)) |
| if version.is_prerelease: |
| release.extend(list(version.pre)) |
| elif version.is_postrelease: |
| release.extend(list(version.post)) |
| else: |
| release.extend([0, 0]) |
| return tuple(release) |
|
|
|
|
| version_info = tuple(int(x) for x in __version__.split('.')[:3]) |
|
|
| __all__ = ['__version__', 'version_info', 'parse_version_info'] |
|
|