Skip to content

Commit

Permalink
Update parse_version_info function.
Browse files Browse the repository at this point in the history
  • Loading branch information
mzr1996 committed Aug 11, 2021
1 parent a747458 commit da93cac
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 28 deletions.
21 changes: 4 additions & 17 deletions mmcls/__init__.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,14 @@
import mmcv

from .version import __version__


def digit_version(version_str):
digit_version = []
for x in version_str.split('.'):
if x.isdigit():
digit_version.append(int(x))
elif x.find('rc') != -1:
patch_version = x.split('rc')
digit_version.append(int(patch_version[0]) - 1)
digit_version.append(int(patch_version[1]))
return digit_version

from .version import __version__, parse_version_info

mmcv_minimum_version = '1.3.8'
mmcv_maximum_version = '1.5.0'
mmcv_version = digit_version(mmcv.__version__)
mmcv_version = parse_version_info(mmcv.__version__)


assert (mmcv_version >= digit_version(mmcv_minimum_version)
and mmcv_version <= digit_version(mmcv_maximum_version)), \
assert (mmcv_version >= parse_version_info(mmcv_minimum_version)
and mmcv_version <= parse_version_info(mmcv_maximum_version)), \
f'MMCV=={mmcv.__version__} is used but incompatible. ' \
f'Please install mmcv>={mmcv_minimum_version}, <={mmcv_maximum_version}.'

Expand Down
31 changes: 20 additions & 11 deletions mmcls/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,33 @@
__version__ = '0.14.0'


def parse_version_info(version_str):
def parse_version_info(version_str: str, length: int = 4):
"""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), and "2.0.0rc1" is parsed into (2, 0, 0, 'rc1').
(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, the last two
items are post or pre info).
"""
version_info = []
for x in version_str.split('.'):
if x.isdigit():
version_info.append(int(x))
elif x.find('rc') != -1:
patch_version = x.split('rc')
version_info.append(int(patch_version[0]))
version_info.append(f'rc{patch_version[1]}')
return tuple(version_info)
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 = parse_version_info(__version__)
Expand Down
1 change: 1 addition & 0 deletions requirements/runtime.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
matplotlib
numpy
packaging

0 comments on commit da93cac

Please sign in to comment.