bpo-37999: No longer use __int__ in implicit integer conversions. by serhiy-storchaka · Pull Request #15636 · python/cpython

@serhiy-storchaka

Only __index__ should be used to make integer conversions lossless.

serhiy-storchaka

@serhiy-storchaka

@serhiy-storchaka serhiy-storchaka changed the title [3.10] bpo-37999: No longer use __int__ in implicit integer conversions. bpo-37999: No longer use __int__ in implicit integer conversions.

May 26, 2020

@serhiy-storchaka

mdickinson

@serhiy-storchaka

mdickinson

mdickinson

@serhiy-storchaka

@serhiy-storchaka

This was referenced

Mar 17, 2023

chrisnovakovic added a commit to chrisnovakovic/cpython that referenced this pull request

Mar 17, 2023
…ted as integers

Prior to pythongh-11952, several standard library functions that expected
integer arguments would nevertheless silently accept (and truncate)
non-integer arguments. This behaviour was deprecated in pythongh-11952, and
removed in pythongh-15636.

However, it may be possible to interpret some non-integer numeric types
(such as `decimal.Decimal`s) as integers if they contain no fractional
part. Implement `__index__` for `decimal.Decimal`, returning an integer
representation of the value if it does not contain a fractional part or
raising a `TypeError` if it does.

bkeryan added a commit to bkeryan/hightime that referenced this pull request

Mar 26, 2025
`datetime` used to accept objects that implement `__int__` or `__index__`, but in Python 3.10 it was changed to accept only `__index__`.
python/cpython#15636

tkrebes pushed a commit to ni/hightime that referenced this pull request

Apr 2, 2025
* hightime: Update Python versions in tox.ini

* hightime: Update trove classifiers

* hightime: More tox.ini updates

* hightime: Use __index__ instead of __int__

`datetime` used to accept objects that implement `__int__` or `__index__`, but in Python 3.10 it was changed to accept only `__index__`.
python/cpython#15636

* github: Update Python versions