1# This file is dual licensed under the terms of the Apache License, Version
2# 2.0, and the BSD License. See the LICENSE file in the root of this repository
3# for complete details.
4from __future__ import absolute_import, division, print_function
5
6
7class Infinity(object):
8
9 def __repr__(self):
10 return "Infinity"
11
12 def __hash__(self):
13 return hash(repr(self))
14
15 def __lt__(self, other):
16 return False
17
18 def __le__(self, other):
19 return False
20
21 def __eq__(self, other):
22 return isinstance(other, self.__class__)
23
24 def __ne__(self, other):
25 return not isinstance(other, self.__class__)
26
27 def __gt__(self, other):
28 return True
29
30 def __ge__(self, other):
31 return True
32
33 def __neg__(self):
34 return NegativeInfinity
35
36Infinity = Infinity()
37
38
39class NegativeInfinity(object):
40
41 def __repr__(self):
42 return "-Infinity"
43
44 def __hash__(self):
45 return hash(repr(self))
46
47 def __lt__(self, other):
48 return True
49
50 def __le__(self, other):
51 return True
52
53 def __eq__(self, other):
54 return isinstance(other, self.__class__)
55
56 def __ne__(self, other):
57 return not isinstance(other, self.__class__)
58
59 def __gt__(self, other):
60 return False
61
62 def __ge__(self, other):
63 return False
64
65 def __neg__(self):
66 return Infinity
67
68NegativeInfinity = NegativeInfinity()