GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||||||||||||
GeezerVison is showing github.com — gh-112636: remove check for float subclasses without nb_float by skirpichev · Pull Request #112637 · python/cpython Conversation
|
|
CC @vstinner, does it make sense for you? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
I don't understand the example. float(a) does now return XXX? Or does it print XXX? Which part of the code prints XXX? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Ah, that was just a debug print from the removed (by this pr) code. I've added a diff to description. The point is that to trigger that code - you must explicitly set nb_float field in the derived class to NULL. But in this way we can break everything! Can't you set nb_add to NULL in a float subclass? Easy! But CPython has enough code, which assuming that float subclasses have working arithmetic dunder methods. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
What is the behavior on this |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
It fails with TypeError (after you run first
Yes, because |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
This change is a backward incompatible change. You should document it in a NEWS entry.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Sorry, but I now think that we should rather return a fallback for integers. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Ok, I did. News entry was missed just as in 31a6554 (dropped similar check in PyNumber_Long).
But why?! Should we check on same ground that an int subtype has nb_add field set? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Because |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
In same way we can recover in case when float subtype sets e.g. nb_negative to |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Co-authored-by: Victor Stinner <[email protected]>
There is a difference, if nb_int is set to Lines 1403 to 1405 in 31516c9
and Lines 1446 to 1448 in 31516c9
I still think we shouldn't keep workarounds for broken subtypes. But if so, at least the nb_int workaround shouldn't be restored. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Ok, I'm closing this. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.