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

57

58

59

60

61

62

63

64

65

66

67

68

# This file is dual licensed under the terms of the Apache License, Version 

# 2.0, and the BSD License. See the LICENSE file in the root of this repository 

# for complete details. 

from __future__ import absolute_import, division, print_function 

 

 

class Infinity(object): 

 

def __repr__(self): 

return "Infinity" 

 

def __hash__(self): 

return hash(repr(self)) 

 

def __lt__(self, other): 

return False 

 

def __le__(self, other): 

return False 

 

def __eq__(self, other): 

return isinstance(other, self.__class__) 

 

def __ne__(self, other): 

return not isinstance(other, self.__class__) 

 

def __gt__(self, other): 

return True 

 

def __ge__(self, other): 

return True 

 

def __neg__(self): 

return NegativeInfinity 

 

Infinity = Infinity() 

 

 

class NegativeInfinity(object): 

 

def __repr__(self): 

return "-Infinity" 

 

def __hash__(self): 

return hash(repr(self)) 

 

def __lt__(self, other): 

return True 

 

def __le__(self, other): 

return True 

 

def __eq__(self, other): 

return isinstance(other, self.__class__) 

 

def __ne__(self, other): 

return not isinstance(other, self.__class__) 

 

def __gt__(self, other): 

return False 

 

def __ge__(self, other): 

return False 

 

def __neg__(self): 

return Infinity 

 

NegativeInfinity = NegativeInfinity()