加一位版本号
(parse_ver('1.4.2') = (1,4,2);bump(版本, 位) 把 major/minor/patch 某一位加一、进位后低位归零;next_version(版本, 改动):break→major、feature→minor、fix→patch;newer(a, b) 判 a 是否比 b 新。)
对 1.4.2 分别做 minor 和 major 进位:
def parse_ver(s):
"""'1.4.2' → (1, 4, 2),能直接比大小。"""
return tuple(int(x) for x in s.split("."))
def bump(ver, part):
"""把版本号的某一位加一:part 是 'major'/'minor'/'patch',进位后低位归零。交回新版本字符串。"""
a, b, c = parse_ver(ver)
if part == "major":
return "%d.0.0" % (a + 1)
if part == "minor":
return "%d.%d.0" % (a, b + 1)
return "%d.%d.%d" % (a, b, c + 1)
def next_version(ver, change):
"""按改动类型决定进哪一位:'break'→major、'feature'→minor、'fix'→patch。"""
part = {"break": "major", "feature": "minor", "fix": "patch"}[change]
return bump(ver, part)
def newer(a, b):
"""版本 a 比 b 新交回 True。"""
return parse_ver(a) > parse_ver(b)
print(bump("1.4.2", "minor") + "/" + bump("1.4.2", "major"))
全部评论