from __future__ import print_function

import re

class Version:
    def __init__(self, version_string):
        self.version_string = version_string
        self.process(version_string)

    def process(self, version_string):
        r = re.compile("r(\d+).(\d+)")
        m = r.match(version_string)
        if m:
            self.year = m.group(1)
            self.issue = m.group(2)
        else:
            raise Exception("Illegal version %s" % version_string)

    def __lt__(self, other):
        if isinstance(other, Version):
            return (self.year, self.issue) < (other.year, other.issue)
        return NotImplemented

    def __le__(self, other):
        if isinstance(other, Version):
            return (self.year, self.issue) <= (other.year, other.issue)
        return NotImplemented

    def __eq__(self, other):
        if isinstance(other, Version):
            return (self.year, self.issue) == (other.year, other.issue)

        return NotImplemented

    def __ne__(self, other):
        if isinstance(other, Version):
            return (self.year, self.issue) != (other.year, other.issue)
        return NotImplemented

    def __gt__(self, other):
        if isinstance(other, Version):
            return (self.year, self.issue) > (other.year, other.issue)
        return NotImplemented

    def __ge__(self, other):
        if isinstance(other, Version):
            return (self.year, self.issue) >= (other.year, other.issue)
        return NotImplemented

    def __repr__(self):
        return "r%s.%s" % (self.year, self.issue)

if __name__ == '__main__':

    v1 = Version("r17.1")
    v2 = Version("r17.2")
    v3 = Version("r17.2")

    assert v1 < v2
    assert v2 > v1
    assert v1 == v1
    assert v2 == v3

    print("All tests have passed")
