diff options
Diffstat (limited to 'dogtail/version.py')
-rwxr-xr-x | dogtail/version.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/dogtail/version.py b/dogtail/version.py new file mode 100755 index 00000000000..4d440806155 --- /dev/null +++ b/dogtail/version.py @@ -0,0 +1,56 @@ +"""Handles versioning of software packages + +Author: Dave Malcolm <dmalcolm@redhat.com>""" +__author__ = 'Dave Malcolm <dmalcolm@redhat.com>' + + +class Version(object): + + """ + Class representing a version of a software package. + Stored internally as a list of subversions, from major to minor. + Overloaded comparison operators ought to work sanely. + """ + + def __init__(self, versionList): + self.versionList = versionList + + def fromString(versionString): + """ + Parse a string of the form number.number.number + """ + return Version(map(int, versionString.split("."))) + fromString = staticmethod(fromString) + + def __str__(self): + return ".".join(map(str, self.versionList)) + + def __getNum(self): + tmpList = list(self.versionList) + + while len(tmpList) < 5: + tmpList += [0] + + num = 0 + for i in range(len(tmpList)): + num *= 1000 + num += tmpList[i] + return num + + def __lt__(self, other): + return self.__getNum() < other.__getNum() + + def __le__(self, other): + return self.__getNum() <= other.__getNum() + + def __eq__(self, other): + return self.__getNum() == other.__getNum() + + def __ne__(self, other): + return self.__getNum() != other.__getNum() + + def __gt__(self, other): + return self.__getNum() > other.__getNum() + + def __ge__(self, other): + return self.__getNum() >= other.__getNum() |