Raymond Hettinger added the comment:
We don't have a choice here. Operations between decimals and floats raise a TypeError. So, we can't register Decimal as a Real; otherwise, static type checking wouldn't be able to flag the following as invalid:
def add(a: Real, b: Real) -> Real:
return a + b
a: Real = Decimal('1.1')
b: Real = 2.2
print(add(a, b))
This gives:
Traceback (most recent call last):
File "/Users/raymond/Documents/tmp.py", line 10, in <module>
print(add(a, b))
File "/Users/raymond/Documents/tmp.py", line 6, in add
return a + b
TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'
Almost the whole point of static checking is to avoid these TypeErrors at runtime
----------
nosy: +rhettinger
_______________________________________
Python tracker
https://bugs.python.org/issue43602
_______________________________________