概要
過去にセマンティクスバージョンを比較する方法を紹介しました
今回は現在のバージョンから一つ前のバージョンを取得する方法を考えます
環境
- macOS 11.8.6
- Python 3.10.2
- packaging 21.3
サンプルコード
"""バージョン管理モジュール."""
from packaging.version import Version
class VersionManager():
"""バージョン管理するクラス."""
def __init__(self, version: str):
"""初期化."""
self.current_version = Version(version)
def get_current_version(self) -> Version:
"""現在のバージョンを取得する."""
return self.current_version
def get_latest_minor_version(self, major_version: int) -> int:
"""メジャーバージョンの最新のマイナーバージョンを取得する."""
if major_version == 0:
return 9
elif major_version == 8:
return 30
def get_pre_version(self):
"""一つ前のバージョンを取得する."""
if self.current_version.minor - 1 < 0:
if self.current_version.major - 1 < 0:
raise
else:
return Version("{}.{}".format(self.current_version.major - 1,
self.get_latest_minor_version(self.current_version.major - 1)))
else:
return Version("{}.{}".format(self.current_version.major,
self.current_version.minor - 1))
if __name__ == '__main__':
print(VersionManager("10.10.0").get_pre_version()) # => 10.9
print(VersionManager("1.0.0").get_pre_version()) # => 0.9
print(VersionManager("9.0.0").get_pre_version()) # => 8.30
解説
マイナーバージョンを中心に考えます
マイナーバージョンがマイナスになる場合はメジャーバージョンをマイナスします
そしてそのメジャーバージョンにおける最新のマイナーバージョンを取得します
今回はマイクロバージョンの部分までは考慮していないのでそこも考慮する必要がありますが感じとしてはマイナーバージョンの取得方法と同じ感じかなと思います
0 件のコメント:
コメントを投稿