aboutsummaryrefslogtreecommitdiffstats
path: root/build/lib.linux-x86_64-2.7/dogtail/version.py
blob: 4d440806155ae834f9eae73d2eda312c38241088 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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()