This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author rhettinger
Recipients Sergey.Kirpichev, docs@python, rhettinger
Date 2021-03-23.07:35:29
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1616484930.01.0.00256945371356.issue43602@roundup.psfhosted.org>
In-reply-to
Content
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 early detection of these problems so we won't encounter the TypeError at runtime.

P.S.  With respect to #4, we've harmonized the APIs as much as we sensibly can.  That allows some code to be more polymorphic as long at the type is consistent throughout.  That is much different than freely mixing floats and decimals in the direct interactions.
History
Date User Action Args
2021-03-23 07:35:30rhettingersetrecipients: + rhettinger, docs@python, Sergey.Kirpichev
2021-03-23 07:35:30rhettingersetmessageid: <1616484930.01.0.00256945371356.issue43602@roundup.psfhosted.org>
2021-03-23 07:35:30rhettingerlinkissue43602 messages
2021-03-23 07:35:29rhettingercreate