Unverified Commit 89e1716a authored by Kai Chen's avatar Kai Chen Committed by GitHub
Browse files

Bump version to v1.1.1 (#518)

* bump version to 1.1.1

* add more version utils

* move parse_version_info to version.py
parent 09b7d6c7
......@@ -4,7 +4,7 @@ from .arraymisc import *
from .fileio import *
from .image import *
from .utils import *
from .version import __version__
from .version import *
from .video import *
from .visualization import *
......
......@@ -10,7 +10,7 @@ from .path import (check_file_exist, fopen, is_filepath, mkdir_or_exist,
from .progressbar import (ProgressBar, track_iter_progress,
track_parallel_progress, track_progress)
from .timer import Timer, TimerError, check_time
from .version_utils import get_git_hash
from .version_utils import digit_version, get_git_hash
try:
import torch
......@@ -23,7 +23,7 @@ except ImportError:
'mkdir_or_exist', 'symlink', 'scandir', 'ProgressBar',
'track_progress', 'track_iter_progress', 'track_parallel_progress',
'Timer', 'TimerError', 'check_time', 'deprecated_api_warning',
'get_git_hash', 'import_modules_from_strings'
'digit_version', 'get_git_hash', 'import_modules_from_strings'
]
else:
from .env import collect_env
......@@ -47,6 +47,6 @@ else:
'_AvgPoolNd', '_BatchNorm', '_ConvNd', '_ConvTransposeMixin',
'_InstanceNorm', '_MaxPoolNd', 'get_build_config', 'BuildExtension',
'CppExtension', 'CUDAExtension', 'DataLoader', 'PoolDataLoader',
'TORCH_VERSION', 'deprecated_api_warning', 'get_git_hash',
'import_modules_from_strings'
'TORCH_VERSION', 'deprecated_api_warning', 'digit_version',
'get_git_hash', 'import_modules_from_strings'
]
......@@ -2,27 +2,65 @@ import os
import subprocess
def get_git_hash(fallback='unknown'):
# Get git hash of the current repo
def _minimal_ext_cmd(cmd):
# construct minimal environment
env = {}
for k in ['SYSTEMROOT', 'PATH', 'HOME']:
v = os.environ.get(k)
if v is not None:
env[k] = v
# LANGUAGE is used on win32
env['LANGUAGE'] = 'C'
env['LANG'] = 'C'
env['LC_ALL'] = 'C'
out = subprocess.Popen(
cmd, stdout=subprocess.PIPE, env=env).communicate()[0]
return out
def digit_version(version_str):
"""Convert a version string into a tuple of integers.
This method is usually used for comparing two versions.
Args:
version_str (str): The version string.
Returns:
tuple[int]: The version info in digits (integers).
"""
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 tuple(digit_version)
def _minimal_ext_cmd(cmd):
# construct minimal environment
env = {}
for k in ['SYSTEMROOT', 'PATH', 'HOME']:
v = os.environ.get(k)
if v is not None:
env[k] = v
# LANGUAGE is used on win32
env['LANGUAGE'] = 'C'
env['LANG'] = 'C'
env['LC_ALL'] = 'C'
out = subprocess.Popen(
cmd, stdout=subprocess.PIPE, env=env).communicate()[0]
return out
def get_git_hash(fallback='unknown', digits=None):
"""Get the git hash of the current repo.
Args:
fallback (str, optional): The fallback string when git hash is
unavailable. Defaults to 'unknown'.
digits (int, optional): kept digits of the hash. Defaults to None,
meaning all digits are kept.
Returns:
str: Git commit hash.
"""
if digits is not None and not isinstance(digits, int):
raise TypeError('digits must be None or an integer')
try:
out = _minimal_ext_cmd(['git', 'rev-parse', 'HEAD'])
sha = out.strip().decode('ascii')
if digits is not None:
sha = sha[:digits]
except OSError:
sha = fallback
......
# Copyright (c) Open-MMLab. All rights reserved.
__version__ = '1.1.0'
__version__ = '1.1.1'
def parse_version_info(version_str):
"""Parse a version string into a tuple.
Args:
version_str (str): The version string.
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').
"""
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)
version_info = parse_version_info(__version__)
__all__ = ['__version__', 'version_info', 'parse_version_info']
from unittest.mock import patch
from mmcv import digit_version, get_git_hash, parse_version_info
def test_digit_version():
assert digit_version('0.2.16') == (0, 2, 16)
assert digit_version('1.2.3') == (1, 2, 3)
assert digit_version('1.2.3rc0') == (1, 2, 2, 0)
assert digit_version('1.2.3rc1') == (1, 2, 2, 1)
assert digit_version('1.0rc0') == (1, -1, 0)
def test_parse_version_info():
assert parse_version_info('0.2.16') == (0, 2, 16)
assert parse_version_info('1.2.3') == (1, 2, 3)
assert parse_version_info('1.2.3rc0') == (1, 2, 3, 'rc0')
assert parse_version_info('1.2.3rc1') == (1, 2, 3, 'rc1')
assert parse_version_info('1.0rc0') == (1, 0, 'rc0')
def _mock_cmd_success(cmd):
return '3b46d33e90c397869ad5103075838fdfc9812aa0'.encode('ascii')
def _mock_cmd_fail(cmd):
raise OSError
def test_get_git_hash():
with patch('mmcv.utils.version_utils._minimal_ext_cmd', _mock_cmd_success):
assert get_git_hash() == '3b46d33e90c397869ad5103075838fdfc9812aa0'
assert get_git_hash(digits=6) == '3b46d3'
assert get_git_hash(digits=100) == get_git_hash()
with patch('mmcv.utils.version_utils._minimal_ext_cmd', _mock_cmd_fail):
assert get_git_hash() == 'unknown'
assert get_git_hash(fallback='n/a') == 'n/a'
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment