-
-
Notifications
You must be signed in to change notification settings - Fork 31.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bpo-37999: No longer use __int__ in implicit integer conversions. #15636
bpo-37999: No longer use __int__ in implicit integer conversions. #15636
Conversation
Only __index__ should be used to make integer conversions lossless.
Lib/datetime.py
Outdated
@@ -2539,7 +2508,7 @@ def _name_from_offset(delta): | |||
# Clean up unused names | |||
del (_DAYNAMES, _DAYS_BEFORE_MONTH, _DAYS_IN_MONTH, _DI100Y, _DI400Y, | |||
_DI4Y, _EPOCH, _MAXORDINAL, _MONTHNAMES, _build_struct_time, | |||
_check_date_fields, _check_int_field, _check_time_fields, | |||
_check_date_fields, _index, _check_time_fields, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like there's an effort to keep things in alphabetical order here; maybe move _index
to the right place with respect to that order?
656c19e
to
49aa158
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM; I'm happy to see this finally reach completion.
Not sure I like the EDIT: This has been changedOverflowError
for large negative values for math.factorial
: that seems like a case of the implementation details leaking into the API.
Just to be clear, this PR doesn't change the fact that PyNumber_Index
can still return something that's an instance of a strict subclass of int
. Is that correct?
Yes, it is correct. |
…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.
Only
__index__
should be used to make integer conversions lossless.https://bugs.python.org/issue37999