|
1 | 1 | # Copyright (c) OpenMMLab. All rights reserved.
|
2 |
| -import warnings |
3 | 2 |
|
4 | 3 | import mmcv
|
5 | 4 | import mmdet
|
6 |
| -from packaging.version import parse |
| 5 | +import mmengine |
| 6 | +from mmengine.utils import digit_version |
7 | 7 |
|
8 | 8 | from .version import __version__, short_version
|
9 | 9 |
|
10 |
| - |
11 |
| -def digit_version(version_str: str, length: int = 4): |
12 |
| - """Convert a version string into a tuple of integers. |
13 |
| -
|
14 |
| - This method is usually used for comparing two versions. For pre-release |
15 |
| - versions: alpha < beta < rc. |
16 |
| - Args: |
17 |
| - version_str (str): The version string. |
18 |
| - length (int): The maximum number of version levels. Default: 4. |
19 |
| - Returns: |
20 |
| - tuple[int]: The version info in digits (integers). |
21 |
| - """ |
22 |
| - version = parse(version_str) |
23 |
| - assert version.release, f'failed to parse version {version_str}' |
24 |
| - release = list(version.release) |
25 |
| - release = release[:length] |
26 |
| - if len(release) < length: |
27 |
| - release = release + [0] * (length - len(release)) |
28 |
| - if version.is_prerelease: |
29 |
| - mapping = {'a': -3, 'b': -2, 'rc': -1} |
30 |
| - val = -4 |
31 |
| - # version.pre can be None |
32 |
| - if version.pre: |
33 |
| - if version.pre[0] not in mapping: |
34 |
| - warnings.warn(f'unknown prerelease version {version.pre[0]}, ' |
35 |
| - 'version checking may go wrong') |
36 |
| - else: |
37 |
| - val = mapping[version.pre[0]] |
38 |
| - release.extend([val, version.pre[-1]]) |
39 |
| - else: |
40 |
| - release.extend([val, 0]) |
41 |
| - |
42 |
| - elif version.is_postrelease: |
43 |
| - release.extend([1, version.post]) |
44 |
| - else: |
45 |
| - release.extend([0, 0]) |
46 |
| - return tuple(release) |
47 |
| - |
48 |
| - |
49 |
| -mmcv_minimum_version = '2.0.0rc0' |
| 10 | +mmcv_minimum_version = '2.0.0rc1' |
50 | 11 | mmcv_maximum_version = '2.1.0'
|
51 | 12 | mmcv_version = digit_version(mmcv.__version__)
|
| 13 | +mmengine_minimum_version = '0.0.0' |
| 14 | +mmengine_maximum_version = '0.2.0' |
| 15 | +mmengine_version = digit_version(mmengine.__version__) |
52 | 16 |
|
53 | 17 | assert (mmcv_version >= digit_version(mmcv_minimum_version)
|
54 | 18 | and mmcv_version < digit_version(mmcv_maximum_version)), \
|
55 | 19 | f'MMCV {mmcv.__version__} is incompatible with MMOCR {__version__}. ' \
|
56 | 20 | f'Please use MMCV >= {mmcv_minimum_version}, ' \
|
57 | 21 | f'< {mmcv_maximum_version} instead.'
|
58 | 22 |
|
| 23 | +assert (mmengine_version >= digit_version(mmengine_minimum_version) |
| 24 | + and mmengine_version < digit_version(mmengine_maximum_version)), \ |
| 25 | + f'MMEngine=={mmengine.__version__} is used but incompatible. ' \ |
| 26 | + f'Please install mmengine>={mmengine_minimum_version}, ' \ |
| 27 | + f'<{mmengine_maximum_version}.' |
| 28 | + |
59 | 29 | mmdet_minimum_version = '3.0.0rc0'
|
60 | 30 | mmdet_maximum_version = '3.1.0'
|
61 | 31 | mmdet_version = digit_version(mmdet.__version__)
|
|
0 commit comments