mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-09 09:22:03 +00:00
Oops add Versions util
This commit is contained in:
parent
539d61faa6
commit
84f3b8fdd5
2 changed files with 92 additions and 7 deletions
|
|
@ -1,11 +1,7 @@
|
|||
from aiogram.utils.versions import Version
|
||||
from .bot import Bot
|
||||
|
||||
|
||||
major_version = 0
|
||||
minor_version = 3
|
||||
major_build = 1
|
||||
build_type = ''
|
||||
build_number = ''
|
||||
VERSION = Version(0, 3, 2, build=2)
|
||||
|
||||
|
||||
__version__ = f"{major_version}.{minor_version}.{major_build}.{build_type}{build_number}"
|
||||
__version__ = VERSION.version
|
||||
|
|
|
|||
89
aiogram/utils/versions.py
Normal file
89
aiogram/utils/versions.py
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
from aiogram.utils.helper import Helper, HelperMode, Item
|
||||
|
||||
|
||||
class Version:
|
||||
def __init__(self, major=0, minor=0, maintenance=0, stage='final', build=0):
|
||||
self.__raw_version = None
|
||||
self.__version = None
|
||||
|
||||
self.version = (major, minor, maintenance, stage, build)
|
||||
|
||||
@property
|
||||
def version(self):
|
||||
if self.__version is None:
|
||||
self.__version = self.get_version()
|
||||
return self.__version
|
||||
|
||||
@version.setter
|
||||
def version(self, version):
|
||||
assert isinstance(version, (tuple, list))
|
||||
self.__raw_version = version
|
||||
self.__version = None
|
||||
|
||||
@property
|
||||
def major(self):
|
||||
return self.__raw_version[0]
|
||||
|
||||
@property
|
||||
def minor(self):
|
||||
return self.__raw_version[1]
|
||||
|
||||
@property
|
||||
def maintenance(self):
|
||||
return self.__raw_version[2]
|
||||
|
||||
@property
|
||||
def stage(self):
|
||||
return self.__raw_version[3]
|
||||
|
||||
@property
|
||||
def build(self):
|
||||
return self.__raw_version[4]
|
||||
|
||||
def get_version(self):
|
||||
"""
|
||||
Returns a PEP 440-compliant version number from VERSION.
|
||||
:param:
|
||||
:return:
|
||||
"""
|
||||
version = self.__raw_version
|
||||
|
||||
# Now build the two parts of the version number:
|
||||
# app = X.Y[.Z]
|
||||
# sub = .devN - for pre-alpha releases
|
||||
# | {a|b|rc}N - for alpha, beta, and rc releases
|
||||
|
||||
main = self.get_main_version()
|
||||
|
||||
sub = ''
|
||||
|
||||
if version[3] != 'final':
|
||||
mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'rc'}
|
||||
sub = mapping[version[3]] + str(version[4])
|
||||
|
||||
return str(main + sub)
|
||||
|
||||
def get_main_version(self):
|
||||
"""
|
||||
Returns app version (X.Y[.Z]) from VERSION.
|
||||
:param:
|
||||
:return:
|
||||
"""
|
||||
version = self.__raw_version
|
||||
parts = 2 if version[2] == 0 else 3
|
||||
return '.'.join(str(x) for x in version[:parts])
|
||||
|
||||
def __str__(self):
|
||||
return self.version
|
||||
|
||||
def __repr__(self):
|
||||
return '<Version:' + str(self) + '>'
|
||||
|
||||
|
||||
class Stage(Helper):
|
||||
mode = HelperMode.lowercase
|
||||
|
||||
FINAL = Item()
|
||||
ALPHA = Item()
|
||||
BETA = Item()
|
||||
RC = Item()
|
||||
Loading…
Add table
Add a link
Reference in a new issue