blob: 92a10caceaa568217ec65269842fb86aa29e96b3 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
Module contains ignite version utility class.
"""
import re
from distutils.version import LooseVersion
from ignitetest import __version__
class IgniteVersion(LooseVersion):
"""
Container for Ignite versions which makes versions simple to compare.
distutils.version.LooseVersion (and StrictVersion) has robust comparison and ordering logic.
Example:
v27 = IgniteVersion("2.7.0")
v28 = IgniteVersion("2.8.1")
assert v28 > v27 # assertion passes!
"""
DEV_VERSION = "dev"
DEFAULT_PROJECT = "ignite"
def __init__(self, vstring=None):
if vstring == self.DEV_VERSION:
self.project = self.DEFAULT_PROJECT
version = vstring
else:
match = re.match(r'([a-zA-Z]*)-*([\d(dev)]+.*)', vstring)
self.project = self.DEFAULT_PROJECT if not match.group(1) else match.group(1)
version = match.group(2)
self.is_dev = (version.lower() == __version__.lower()) or version == self.DEV_VERSION
if self.is_dev:
version = __version__ # we may also parse pom file to gain correct version (in future)
super().__init__(version)
def __str__(self):
return "%s-%s" % (self.project, "dev" if self.is_dev else super().__str__())
def _cmp(self, other):
if isinstance(other, str):
other = IgniteVersion(other)
# todo solve comparability issues and uncomment the following
# if self.project != other.project:
# raise Exception("Incomperable versons v1=%s, v2=%s because of different projects" % (self, other))
return super()._cmp(other)
def __repr__(self):
return "IgniteVersion ('%s')" % str(self)
DEV_BRANCH = IgniteVersion(__version__)
# 2.7.x versions
V_2_7_6 = IgniteVersion("2.7.6")
LATEST_2_7 = V_2_7_6
# 2.8.x versions
V_2_8_0 = IgniteVersion("2.8.0")
V_2_8_1 = IgniteVersion("2.8.1")
LATEST_2_8 = V_2_8_1
# 2.9.x versions
V_2_9_0 = IgniteVersion("2.9.0")
V_2_9_1 = IgniteVersion("2.9.1")
LATEST_2_9 = V_2_9_1
# 2.10.x versions
V_2_10_0 = IgniteVersion("2.10.0")
LATEST_2_10 = V_2_10_0
# 2.11.x versions
V_2_11_0 = IgniteVersion("2.11.0")
V_2_11_1 = IgniteVersion("2.11.1")
LATEST_2_11 = V_2_11_1
# 2.12.x versions
V_2_12_0 = IgniteVersion("2.12.0")
LATEST_2_12 = V_2_12_0
# 2.13.x versions
V_2_13_0 = IgniteVersion("2.13.0")
LATEST_2_13 = V_2_13_0
# if you updated the LATEST version
# please check DEV version in 'tests/ignitetest/__init__.py'
LATEST = LATEST_2_13
OLDEST = V_2_7_6