import logging import re import subprocess from contextlib import suppress from pkg_resources import DistributionNotFound, get_distribution log = logging.getLogger(__name__) __version__ = "0.0.0.dev" with suppress(DistributionNotFound): __version__ = get_distribution("pymilvus").version def get_commit(version: str = "", short: bool = True) -> str: """get commit return the commit for a specific version like `xxxxxx.dev12`""" version_info = r"((\d+)\.(\d+)\.(\d+))((rc)(\d+))?(\.dev(\d+))?" # 2.0.0rc9.dev12 p = re.compile(version_info) target_v = __version__ if version == "" else version match = p.match(target_v) if match is not None: match_version = match.groups() if match_version[7] is not None: if match_version[4] is not None: v = str(int(match_version[6]) - 1) target_tag = "v" + match_version[0] + match_version[5] + v else: target_tag = "v" + ".".join(str(int("".join(match_version[1:4])) - 1).split("")) target_num = int(match_version[-1]) elif match_version[4] is not None: target_tag = "v" + match_version[0] + match_version[4] target_num = 0 else: target_tag = "v" + match_version[0] target_num = 0 else: return f"Version: {target_v} isn't the right form" try: cmd = ["git", "rev-list", "--reverse", "--ancestry-path", f"{target_tag}^..HEAD"] log.info(f"git cmd: {' '.join(cmd)}") result = subprocess.check_output(cmd).decode("ascii").strip().split("\n") length = 7 if short else 40 return result[target_num][:length] except Exception as e: return f"Get commit for version {target_v} wrong: {e}"
Memory