Make Fraction(-1).__hash__() return -2 rather than -1 (see issue 10356).
diff --git a/Lib/fractions.py b/Lib/fractions.py
index 51e67e2..8be52d2 100644
--- a/Lib/fractions.py
+++ b/Lib/fractions.py
@@ -528,12 +528,8 @@
return Fraction(round(self / shift) * shift)
def __hash__(self):
- """hash(self)
+ """hash(self)"""
- Tricky because values that are exactly representable as a
- float must have the same hash as that float.
-
- """
# XXX since this method is expensive, consider caching the result
# In order to make sure that the hash of a Fraction agrees
@@ -550,7 +546,8 @@
hash_ = _PyHASH_INF
else:
hash_ = abs(self._numerator) * dinv % _PyHASH_MODULUS
- return hash_ if self >= 0 else -hash_
+ result = hash_ if self >= 0 else -hash_
+ return -2 if result == -1 else result
def __eq__(a, b):
"""a == b"""