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")